如何将给定DATETIME
的 time 部分转换为午夜以来的毫秒数?例如,
'2011-08-29 00:00:00' -> 0
'2011-08-28 00:00:00' -> 0
'2011-08-29 01:00:00' -> 3600000
在SQL Server 2005中有没有简单的方法呢?
答案 0 :(得分:4)
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
答案 1 :(得分:3)
有点不那么优雅 - 但是自我记录?
select DATEPART(MILLISECOND,d)+1000*(DATEPART(SECOND,d)+60*(DATEPART(MINUTE,d)+60*DATEPART(HOUR,d)))
我认为它在夏令时也有不同的表现 - 根据要求可能有好有坏。