oracle 計算時間間距

2021-05-25 15:21:23 字數 3416 閱讀 1477

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...