[SQL ] 在Oracler計算兩時間差
資料庫名稱:
資料庫版本:Oracle
內容/問題描述:
我現在有兩個時間欄位需要計算其間距,但是計算結果詭異,也不知道單位為何。
由於是在使用Oracle SQL Developer環境下操作MySQL,一切語法還是照Oracle規矩走。
也就是說,無法使用 timediff() 這樣的語法。
以下是程式碼與結果(M1):
select a.id, a.create_time, b.deposite_time,
((b.deposite_time) - (a.create_time))
from afbet_main.t_patron_user a,
(select acc_ref_id, min(create_time) as deposite_time
from afbet_main.t_pocket_fin_flow
group by acc_ref_id) b
where a.id = b.acc_ref_id
limit 3
id create_time deposite_time (b.deposite_time - a.create_time)
------------------------------ ------------------------- ---------------------
1 2018-03-06 08:15:22.0 2018-03-09 12:50:26.961 3043504.961000
2 2018-03-06 08:43:56.0 2018-03-20 07:23:37.188 13987981.188000
3 2018-03-07 08:06:36.0 2018-03-10 08:55:04.558 3004868.558000
換個方式再來試試看(M2):
select a.id, a.create_time, b.deposite_time,
round(24 * (date(b.deposite_time) - date(a.create_time)), 1)
from afbet_main.t_patron_user a,
(select acc_ref_id, min(create_time) as deposite_time
from afbet_main.t_pocket_fin_flow
group by acc_ref_id) b
where a.id = b.acc_ref_id
limit 3
id create_time deposite_time 24*(date(b.deposite_time) - date(a.create_time))
----------------------------- ------------------------- ---------------------
1 2018-03-06 08:15:22.0 2018-03-09 12:50:26.961 72
2 2018-03-06 08:43:56.0 2018-03-20 07:23:37.188 336
3 2018-03-07 08:06:36.0 2018-03-10 08:55:04.558 72
以下是我的問題:
1. M1計算出來的時間差,其單位是什麼?我可以怎麼得知?
2. M2計算出來的時間差,只有滿一天的單位才乘上24小時,未滿部分未計,非我想要。
3. 發現create_time與deposite_time是兩個不同時間格式:datetime & timestamp。
我該如何把他們變成相同格式後再計算?to_char()在此無用。
4. 相減後的結果,如何把它變成相同格式:YYYY-MM-DD HH:MM:SS?
面對Oracle,實在挑戰很多,還請指教,感激不盡~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.177.36.225 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Database/M.1566917352.A.D72.html
推
08/28 16:34,
5年前
, 1F
08/28 16:34, 1F
→
08/28 16:41,
5年前
, 2F
08/28 16:41, 2F
→
08/28 16:45,
5年前
, 3F
08/28 16:45, 3F
→
08/28 16:54,
5年前
, 4F
08/28 16:54, 4F
Database 近期熱門文章
PTT數位生活區 即時熱門文章