Trunc (sysdate) в SQL Server - PullRequest
       8

Trunc (sysdate) в SQL Server

13 голосов
/ 11 ноября 2009

Что эквивалентно:

TRUNC(SYSDATE) 

... в SQL Server 2005?

Ответы [ 2 ]

18 голосов
/ 11 ноября 2009

Рекомендуется:

DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))

Это еще одна альтернатива, но она рискованна из-за приведения к FLOAT. Также было продемонстрировано, что не масштабируется производительность, а также подход DATEADD / DATEDIFF.

CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME)
1 голос
/ 03 января 2012

Другой вариант - использовать CONVERT (MSSQL 2008 и более поздние версии) и либо использовать соответствующий стиль, либо использовать стиль, который вы можете затем ПОДПИСАТЬ. Я не имею представления о производительности по сравнению с решением dateadd / datediff.

, например

SELECT SUBSTRING(CONVERT(nvarchar(30), GETDATE(), 120), 1, 16)

Возвращает:

2012-01-03 15:30

Пример использования группы, в которой перечислены строки, созданные за минуту (подразумевается «созданный» столбец даты и времени):

SELECT SUBSTRING(CONVERT(nvarchar(30), created, 120), 1, 16) as [minute]
, COUNT(1) as [per min]
FROM foo
GROUP BY SUBSTRING(CONVERT(nvarchar(30), created, 120), 1, 16)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...