DateTime в миллисекунды с полуночи - PullRequest
2 голосов
/ 29 августа 2011

Как я могу преобразовать время часть данного 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?

Ответы [ 2 ]

4 голосов
/ 29 августа 2011
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   
3 голосов
/ 22 ноября 2012

Немного менее элегантно - но самодокументируется?

select DATEPART(MILLISECOND,d)+1000*(DATEPART(SECOND,d)+60*(DATEPART(MINUTE,d)+60*DATEPART(HOUR,d)))

Я думаю, что это также ведет себя по-разному при переходе на летнее время - что может быть хорошим или плохим в зависимости от требований.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...