資料庫的時間運算

2022-03-19 19:34:43 字數 4186 閱讀 8900

oracle

--取現在時間

select sysdate from dual  --2010-7-15 10:51:31

--前兩天,預設以天為單位

select sysdate-2 from dual  --2010-7-13 10:51:31

--前一小時

select sysdate-1/24 from dual  --2010-7-15 9:51:31

--前兩個月

select add_months(sysdate,-2) from dual  --2010-5-15 10:51:31

--字串轉日期

select to_date('2010-7-15 10:51:31','yyyy-mm-dd hh24:mi:ss') from dual  --2010-7-15 10:51:31

select to_date('2010-7-15','yyyy-mm-dd') from dual  --2010-7-15

--日期轉字串

select to_char(sysdate,'yyyy') from dual  --2010

select to_char(to_date('2010-7-15 10:51:31','yyyy-mm-dd hh24:mi:ss'),'yyyy') from dual  --2010

select to_char(to_date('2010-7-15 10:51:31','yyyy-mm-dd hh24:mi:ss'),'year') from dual  --twenty ten

select to_char(to_date('2010-7-15 10:51:31','yyyy-mm-dd hh24:mi:ss'),'mm') from dual --07

select to_char(to_date('2010-7-15 10:51:31','yyyy-mm-dd hh24:mi:ss'),'month') from dual --7月

select to_char(to_date('2010-7-15 10:51:31','yyyy-mm-dd hh24:mi:ss'),'dd') from dual  --15

select to_char(to_date('2010-7-15 10:51:31','yyyy-mm-dd hh24:mi:ss'),'day') from dual  --星期四

select to_char(to_date('2010-7-15 10:51:31','yyyy-mm-dd hh24:mi:ss'),'hh24') from dual  --10

select to_char(to_date('2010-7-15 10:51:31','yyyy-mm-dd hh24:mi:ss'),'mi') from dual  --51

select to_char(to_date('2010-7-15 10:51:31','yyyy-mm-dd hh24:mi:ss'),'ss') from dual  --31

--求時間差

select to_date('2010-07-14 9:12:35','yyyy-mm-dd hh24:mi:ss') -

to_date('2010-07-13 15:12:35','yyyy-mm-dd hh24:mi:ss') from dual  --0.75,預設以天為單位

select (to_date('2010-07-14 9:12:35','yyyy-mm-dd hh24:mi:ss') -

to_date('2010-07-13 15:12:35','yyyy-mm-dd hh24:mi:ss'))*24 from dual  --18,轉化為小時

select (to_date('2010-07-14 9:12:35','yyyy-mm-dd hh24:mi:ss') -

to_date('2010-07-13 15:12:36','yyyy-mm-dd hh24:mi:ss'))*24 from dual  --17.9997222222222,與分秒有關

--選出2010-7-13 15:30:00之後的新聞

select newsid,newstitle from bs_news where createtime >= to_date('2010-7-13 15:30:00','yyyy-mm-dd hh24:mi:ss')

--選出2010-7-13 00:00:00之後的新聞

select newsid,newstitle  from bs_news where createtime >= to_date('2010-7-13 00:00:00','yyyy-mm-dd hh24:mi:ss')

--等價於:select newsid,newstitle  from bs_news where createtime >= to_date('2010-7-13','yyyy-mm-dd')

--選出2010.07.12的新聞

select newsid,newstitle  from bs_news where createtime between to_date('2010-07-12','yyyy-mm-dd') and to_date('2010-07-12

23:59:59','yyyy-mm-dd hh24:mi:ss')

sql

--取現在時間

select getdate() --2010-07-13 10:51:31.793

--前兩天

select dateadd(dd,-2,getdate())  --2010-07-13 10:51:31.793

--前一小時

select dateadd(hh,-1,getdate())  --2010-07-15 9:51:31.793

--前兩個月

select dateadd(mm,-2,getdate())  --2010-05-15 10:51:31.793

--字串轉日期

select cast('2010-07-15 10:51:31.793' as datetime)  --2010-07-15 10:51:31.793

--日期轉字串

select cast(getdate() as varchar(18))  --07 15 2010  10:51am

select convert(varchar(18),getdate())   --07 15 2010  10:51am

--轉成更多字串格式

select convert(varchar(19),getdate(), 20)  --2010-07-15 10:51:31

select convert(varchar(10),getdate(), 111)  --2010/07/15

--求時間差

--精確到年份,2010-2009=1,與月/日無關

select datediff(yyyy, '2009-07-14', '2010-01-20') 

--精確到小時,11-9+24=26,與分/秒無關

select datediff(hh,'2010-07-14 9:12:35.012','2010-07-15 11:50:35.012') 

--類似的date-part單位還有mm-月,dd-日,mi-分鐘,ss-秒,mi-毫秒

--選出2010-7-13 15:30:00之後的新聞

select newsid,newstitle from bs_news where createtime >= cast('2010-7-13 15:30:00' as datetime)

--選出2010-7-13 00:00:00之後的新聞

select newsid,newstitle from bs_news where createtime >= cast('2010-7-13 00:00:00' as datetime)

--等價於:select newsid,newstitle from bs_news where createtime >= cast('2010-7-13' as datetime)

--選出2010.07.12的新聞

select newsid,newstitle from bs_news where createtime between cast('2010-07-12' as datetime) and cast('2010-07-12 23:59:59'

as datetime)

Oracle 時間運算

with temp as select to date 2019 5 3 yyyy mm dd hh24 mi ss as gmt time from dual select to char gmt time,yyyy mm dd as 測試時間,to char gmt time 5,yyyy mm...

PHP時間運算

在很多場合為了顯示出資訊的及時性,一般會將時間顯示成 剛剛 5分鐘前 3小時前 等,而不是直接將時間列印出來。比如微博,sns類應用就最長用到這個功能。而一般儲存在資料庫中的時間格式為 unix時間戳,所以這裡記錄乙個將 unix時間戳 轉化為時間軸顯示的php函式。date default tim...

Python的時間運算

如何計算兩個時間的差,python就有很好的模組datetime供我們使用 import datetime d1 datetime.datetime 2009,3,23 d2 datetime.datetime 2009,10,7 daycount d1 d2 days 輸出 198 這就可以計算兩...