如何將給定DATETIME
的時間時間的一部分轉換爲自午夜以來的毫秒數?例如,午夜時間到秒之間
'2011-08-29 00:00:00' -> 0
'2011-08-28 00:00:00' -> 0
'2011-08-29 01:00:00' -> 3600000
有什麼簡單的方法可以在SQL Server 2005中執行此操作嗎?
如何將給定DATETIME
的時間時間的一部分轉換爲自午夜以來的毫秒數?例如,午夜時間到秒之間
'2011-08-29 00:00:00' -> 0
'2011-08-28 00:00:00' -> 0
'2011-08-29 01:00:00' -> 3600000
有什麼簡單的方法可以在SQL Server 2005中執行此操作嗎?
WITH Dates(D) AS
(
SELECT { ts '2011-08-29 00:00:00.000' } UNION ALL
SELECT { ts '2011-08-28 00:00:00.000' } UNION ALL
SELECT { ts '2011-08-29 01:00:00.000' }
)
SELECT DATEDIFF(ms, 0,
DATEADD(Day, 0 - DATEDIFF(Day, 0, D), D))
FROM Dates
有點不雅 - 但自我記錄?
select DATEPART(MILLISECOND,d)+1000*(DATEPART(SECOND,d)+60*(DATEPART(MINUTE,d)+60*DATEPART(HOUR,d)))
我想這也表現不同圍繞夏令 - 這可能是好還是壞取決於需求。
+1您知道,使用SQL Server 2008和日期類型不是更容易嗎? – gbn