months_between
months_between (x, y)用於計算x和y之間有幾個月。
如果x在日曆中比y早,那麼months_between()就返回乙個負數。
當x 和 y 之間的月份之差不是整月的時候,可以採用小數表示,例如
select months_between('25-may-2008', '15-jan-2008') from dual;
months_between('25-may-2008','15-jan-2008') 4.32258065 months_between(date1, date2),必須注意的是,date1與date2都為date型別,不然會出現錯誤。須用to_date(『』,'') 來轉換為日期格式,才能參加計算。
***months_between與round計算出的結果不同,round更精確一些??還是都有誤差??
有兩個日期資料start_date,end_date,欲得到這兩個日期的時間差(以天,小時,分鐘,秒,毫秒):
天:round(to_number(end_date - start_date))
小時:round(to_number(end_date - start_date) * 24)
分鐘:round(to_number(end_date - start_date) * 24 * 60)
秒:round(to_number(end_date - start_date) * 24 * 60 * 60)
毫秒:round(to_number(end_date - start_date) * 24 * 60 * 60 * 60)
select months_between(sysdate,t.purchase_date),t.purchase_date from host_lib t;
select round(to_number(sysdate - t.purchase_date)),t.purchase_date from host_lib t;
附:日期運算函式 23
add_months(d,n)
4--時間點d再加上n個月 56
ex.
7select sysdate, add_months(sysdate,2) aa from dual; 89
sysdate aa
10---------- ----------
1121-sep-07 21-nov-07
1213
last_day(d)
14--時間點d當月份最後一天
1516
ex.
17select sysdate, last_day(sysdate) last_day from dual;
1819
sysdate last_day
20---------- ---------
2121-sep-07 30-sep-07
2223
next_day(d,number)
24--◎ 時間點d開始,下乙個星期幾的日期
25--◎ 星期日 = 1 星期一 = 2 星期二 = 3
26-- 星期三 = 4 星期四 = 5 星期五 = 6 星期六 = 7
2728
ex.
29select sysdate, next_day(sysdate,2) aa from dual;
3031
sysdate aa
32---------- ----------
3321-sep-07 24-sep-07
3435
months_between(d1,d2)
36--計算d1與d2相隔的月數
3738
ex.
39select trunc(months_between(to_date('20071101','yyyymmdd'),
40to_date('20070820','yyyymmdd'))) aa
41from dual;
4243
aa
44----------
452
4647
new_time(d,c1,c2)
48--轉換新時區
4950
ex.
51select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') 台北,
52to_char(new_time(sysdate,'est','gmt'),'yyyy/mm/dd hh24:mi:ss') 格林威治
53from dual;
5455
台北 格林威治
56-------------------- -------------------
572007/09/21 14:36:53 2007/09/21 19:36:53
5859
round(d[,fmt])
60--◎ 對日期作四捨五入運算
61--◎ 月的四捨五入以每月的15號為基準
62--◎ 年的四捨五入以每年6月為基準
6364
ex.
65select sysdate, round(sysdate,'year') aa from dual;
6667
sysdate aa
68---------- ----------
6921-sep-07 01-jan-08
7071
select sysdate, round(sysdate,'month') aa from dual;
7273
sysdate aa
74---------- ----------
7521-sep-07 01-oct-07
7677
trunc(d[,fmt])
78--對日期作擷取運算
7980
ex.
81select sysdate, trunc(sysdate,'year') aa from dual;
8283
sysdate aa
84---------- ----------
8521-sep-07 01-jan-07
8687
select sysdate, trunc(sysdate,'month') aa from dual;
8889
sysdate aa
90---------- ----------
9121-sep-07 01-sep-07
Mysql計算時間距離
1,首先,看看mysql幾個內建時間函式 select now current timestamp current time sysdate 結果如下 2,計算時間差的內建函式timestampdiff timestampdiff interval,datetime expr1,datetime e...
Oracle計算時間SQL
select extract day from to date 20130210000000 yyyymmddhh24miss sysdate day 9 to second 天,extract hour from to date 20130210000000 yyyymmddhh24miss sy...
Oracle計算時間差
oracle中計算時間差是經常用到的。可以使用 日期1 日期2 並加以運算,來獲得你要想的時間差 天 小時 分鐘或者秒。例如 select to date 2012 02 20 17 45 04 yyyy mm dd hh24 mi ss to date 2012 02 19 08 34 04 yy...