Округление дат
В SQL Server нет встроенного способа округлить дату вниз до месяца, часа или минуты. Однако это можно сделать, комбинируя функции DATEADD() и DATEDIFF().
Чтобы округлить дату 1914-08-16 вниз до года, нужно вызвать DATEADD(YEAR, DATEDIFF(YEAR, 0, '1914-08-16'), 0).
Чтобы округлить дату вниз до месяца, нужно вызвать DATEADD(MONTH, DATEDIFF(MONTH, 0, '1914-08-16'), 0).
Этот подход работает и для ряда других частей даты.
Это упражнение является частью курса
Анализ временных рядов в SQL Server
Инструкции к упражнению
- Используйте
DATEADD()иDATEDIFF()совместно с частями даты, чтобы округлить время вниз до дня, часа и минуты.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
DECLARE
@SomeTime DATETIME2(7) = '2018-06-14 16:29:36.2248991';
-- Fill in the appropriate functions and date parts
SELECT
DATEADD(___, DATEDIFF(DAY, 0, @SomeTime), 0) AS RoundedToDay,
___(___, ___(___, 0, @SomeTime), 0) AS RoundedToHour,
___(___, ___(___, 0, @SomeTime), 0) AS RoundedToMinute;