我有一個表作爲測試差是給不正確的結果
shiftend | out |
---------------------------------------------
15:00:00.0000000 | 2016-07-22 14:42:00 |
16:00:00.0000000 | 2016-07-22 16:06:00 |
Shiftend是有一個數據類型爲時間 出來是有一個數據類型爲SMALLDATETIME
我期待輸出作爲
shiftend | out | Output
-----------------------------------------------------------------------------
15:00:00.0000000 | 2016-07-22 14:42:00 | -00:18:00
16:00:00.0000000 | 2016-07-22 16:06:00 | 00:06:00
我想這個查詢:
select shiftend,out,CAST((out-Shiftend) as time(0)) as Output from test
where
CAST(CONVERT(NVARCHAR(10), out, 101) AS SMALLDATETIME) = CAST(CONVERT(NVARCHAR(10),'2016-07-22', 101) AS SMALLDATETIME)
但我得到的輸出作爲
shiftend | out | Output
-----------------------------------------------------------------------------
15:00:00.0000000 | 2016-07-22 14:42:00 | 23:42:00
16:00:00.0000000 | 2016-07-22 16:06:00 | 00:06:00
23點42分00秒不正確。如何計算時間。
不幸的是,你不能在'time'數據類型負值。它正在將-18變成(00:00 - 00:18),即前一天的23:42。您可以: - 使用'datediff'並將差值保存爲秒數,例如。 - 只保存模塊化差異,並有一個單獨的列來決定它是正面還是負面的差異。 - 編寫自己的SQL函數來計算 – Ash
如果它沒有給我負面的信息,我們只能得到00:18,那就會好的 –