看板 Database 關於我們 聯絡資訊
資料庫名稱: 資料庫版本: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
funk6478: 3(天) 04(時) 35(分) 04(秒) .961000(毫秒) 08/28 16:34
funk6478: M1這樣直接減 他不是當日期在算 是當成2個數在減 08/28 16:41
funk6478: 像M1的2就變成 20180320072337.188-20180306084356 08/28 16:45
funk6478: https://reurl.cc/729Kdd 可以參考這篇看看 08/28 16:54