Trunc (sysdate) в SQL Server
Что эквивалентно:
TRUNC(SYSDATE)
... в SQL Server 2005?
Ответы
Ответ 1
Рекомендуемые:
DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))
Это еще одна альтернатива, но она опасна из-за того, что вы выбрали FLOAT. Было также продемонстрировано не масштабирование производительности, а также подход DATEADD/DATEDIFF.
CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME)
Ответ 2
Другим вариантом является использование CONVERT (MSSQL 2008 и более поздних версий) и либо использовать соответствующий стиль, либо использовать стиль, который вы затем можете использовать SUBSTRING. Я понятия не имею о производительности по сравнению с решением dateadd/датичным решением.
например.
SELECT SUBSTRING(CONVERT(nvarchar(30), GETDATE(), 120), 1, 16)
Возврат:
2012-01-03 15:30
Пример использования группы, в которой перечислены строки, созданные за минуту (предполагается, что "создан" столбец datetime):
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)