日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

monthdiff oracle_Oracle计算时间差函数

發布時間:2023/12/9 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 monthdiff oracle_Oracle计算时间差函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、months_between(date1,date2) ?返回兩個日期之間的月份的差值

(1)、如果兩個日期月份內天數相同,或者都是某個月的最后一天,返回一個整數。否則,返回數值帶小數

select months_between(sysdate,addtime)as diff_month from test6

2、interval ? 時間間隔函數

Oracle語法:

INTERVAL 'integer [- integer]' {YEAR | MONTH} [(precision)][TO {YEAR | MONTH}]

該數據類型常用來表示一段時間差, 注意時間差只精確到年和月. precision為年或月的精確域, 有效范圍是0到9, 默認值為2.

i、

select INTERVAL '123-2' YEAR(3) TO MONTH from dual

表示: 123年2個月, "YEAR(3)" 表示年的精度為3, 可見"123"剛好為3為有效數值, 如果該處YEAR(n), n<3就會出錯, 注意默認是2.

ii、

select INTERVAL '4' YEAR from dual

表示: 4年, 同 INTERVAL '4-0' YEAR TO MONTH 是一樣的-----表示4年

iii、

select INTERVAL '50' MONTH from dual;

表示: 50個月, 同 INTERVAL '4-2' YEAR TO MONTH 是一樣 ?----- 表示4年2個月

vi、

select (interval '3-6' year)+(interval '6' month) from dual

表示:3年6個月加上6個月=4年

3、利用Interval可以實現時間的差值運算,而不用借助于工具函數如month,前提是進行運算的字段必須是date類型

當前時間減去7分鐘的時間

select sysdate,sysdate - interval '7' MINUTE from dual

當前時間減去7小時的時間

select sysdate - interval '7' hour from dual

當前時間減去7天的時間

select sysdate - interval ’7’ day from dual

當前時間減去7月的時間

select sysdate,sysdate - interval '7' month from dual

當前時間減去7年的時間

select sysdate,sysdate - interval '7' year from dual

時間間隔乘以一個數字

select sysdate,sysdate - 8*interval '7' hour from dual

select addtime,(addtime - interval '7' YEAR) from test6

含義解釋:

Dual 是 Oracle中的一個實際存在的表,任何用戶均可讀取,常用在沒有目標表的select語句塊中。

比如,我要獲得系統時間,則用“select sysdate from dual” 則返回系統當前的時間:2008-11-07 9:32:49,不同系統可能返回日期的格式不一樣。"select user from dual"則返回當前連接的用戶。如果是"select 1+2 from dual",則返回結果:3

4、利用兩個日期相減,并通過TO_NUMBER和ROUND函數計算得到時間差 ?不精確的計算方法

i、天:

SELECT ROUND(TO_NUMBER(sysdate-addtime)) from test6

ii、小時

SELECT ROUND(TO_NUMBER(sysdate-addtime))*24 from test6

iii、分鐘

SELECT ROUND(TO_NUMBER(sysdate-addtime))*24*60 from test6

秒:ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60)

毫秒:ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60 * 1000)

當然這樣算出來的結果不是很準確,只是粗略的計算,因為當中使用到了ROUND進行了四舍五入!!!

5、利用TO_CHAR和Interval得到的系統事件減去一段時間間隔,并返回精確時間

select sysdate,TO_CHAR(sysdate - interval '4-2' YEAR TO MONTH - interval '1' day,'yyyy/mm/dd hh24:mi:ss') from dual

6、真正精確的計算兩個date類型的日期的間隔,利用trunc函數,注意是:date類型,當然如果你的日期類型定義成timespan當然就不用這么麻煩了!!!

i、計算兩個日期的秒間隔

select86400*(sysdate-addtime)-60*(trunc((86400*(sysdate-addtime))/60)) from test6

ii、計算兩個日期的分鐘間隔 ? 注意:這里的分鐘間隔要考慮到秒的問題,這里舍棄秒,因為上面已經計算出秒的差值了

SELECT sysdate,addtime fromtest6;select trunc(1440*(sysdate-addtime)-60*trunc(1440*(sysdate-addtime)/60)) from test6

iii、計算兩個日期的小時間隔,同樣這里要舍棄秒和分鐘,不采取四舍五入,因為上面已經計算出差值了

select sysdate,addtime fromtest6;select trunc((sysdate-addtime)*24-24*trunc((sysdate-addtime)*24/24)) from test6;

vi、計算兩個日期的周的間隔

SELECT sysdate,addtime fromtest6;select trunc((sysdate-addtime)/7) from test6

vii、計算兩個日期的天的差距

SELECT sysdate,addtime fromtest6;select trunc(sysdate-addtime) from test6

由于每個月的天數無法給出一個確切值,所以無法通過上面的算法給出月份的差距,但是可以通過months_between函數獲得

SELECT sysdate,addtime fromtest6;select trunc(months_between(sysdate,addtime)) from test6;

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的monthdiff oracle_Oracle计算时间差函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。