[SQL] MSSQL,Oracle 計算兩個日期(時間)之間的差, (DATEDIFF,ROUND)

需要用到兩個日期(時間欄位)之間的差計算的時候~

ex:算個一天前,幾秒前~或是更多的時候,可以使用這個語法!!!

如果有兩個Date型別欄位分別是startdate,enddate

在MSSQL和Oracle 如何計算兩個欄位的時間差

MSSQL:

DATEDIFF(datepart,startdate,enddate)
datepart datepart 縮寫(也可以不縮寫的)
yy, yyyy
季度 yy, yyyy
mm, m
年中的日 dy, y
dd, d
wk, ww
星期 dw, w
小时 hh
分钟 mi, n
ss, s
毫秒 ms
微妙 mcs
纳秒 ns

 

Oracle :

--by Day
ROUND(TO_NUMBER(enddate - startdate))

 

更多運用舉例如下:

  MSSQL
天   DATEDIFF(dd,startdate,enddate)
小時 DATEDIFF(hh,startdate,enddate)
分鐘 DATEDIFF(mi,startdate,enddate)
秒   DATEDIFF(ss,startdate,enddate)
毫秒 DATEDIFF(ms,startdate,enddate)
  Oracle
天   ROUND(TO_NUMBER(enddate - startdate))
小時 ROUND(TO_NUMBER(enddate - startdate) * 24)
分鐘 ROUND(TO_NUMBER(enddate - startdate) * 24 * 60)
秒   ROUND(TO_NUMBER(enddate - startdate) * 24 * 60 * 60)
毫秒 ROUND(TO_NUMBER(enddate - startdate) * 24 * 60 * 60 * 1000)

參考來源: MSSQL , Oracle

 


與每個人,一起分享所學到,所用到的,

若有錯誤,請您不吝指教,謝謝大家。