Datediff – удобный инструмент для расчета разницы между датами
Функция DATEDIFF возвращает разницу между двумя датами в указанных единицах измерения времени. Она принимает три аргумента: единицы измерения (например, годы, месяцы, дни), начальную дату и конечную дату.
Ниже приведены несколько примеров использования функции DATEDIFF с различными единицами измерения:
1. Нахождение разницы между двумя датами в днях:
DECLARE @StartDate DATETIME = '2020-01-01'
DECLARE @EndDate DATETIME = '2020-01-31'
SELECT DATEDIFF(day, @StartDate, @EndDate) AS 'Дней'
-- Результат: 30
2. Нахождение разницы между двумя датами в месяцах:
DECLARE @StartDate DATETIME = '2020-01-01'
DECLARE @EndDate DATETIME = '2020-03-31'
SELECT DATEDIFF(month, @StartDate, @EndDate) AS 'Месяцев'
-- Результат: 2
3. Нахождение разницы между двумя датами в годах:
DECLARE @StartDate DATETIME = '2020-01-01'
DECLARE @EndDate DATETIME = '2022-12-31'
SELECT DATEDIFF(year, @StartDate, @EndDate) AS 'Лет'
-- Результат: 2
Также в функции DATEDIFF можно использовать другие единицы измерения времени, например, часы, минуты и секунды.
Например, чтобы найти разницу между двумя датами в часах, можно использовать следующий код:
DECLARE @StartDate DATETIME = '2020-01-01 12:00:00'
DECLARE @EndDate DATETIME = '2020-01-01 16:30:00'
SELECT DATEDIFF(hour, @StartDate, @EndDate) AS 'Часов'
-- Результат: 4
Также можно использовать DATEDIFF для нахождения количества единиц измерения между текущей датой и другой датой без указания первого аргумента.
Например, чтобы найти разницу между текущей датой и датой '2020-01-01' в днях, можно использовать следующий код:
SELECT DATEDIFF(day, GETDATE(), '2020-01-01') AS 'Дней'
-- Результат: отрицательное число (так как дата '2020-01-01' находится в прошлом относительно текущей даты)
Использование функции DATEDIFF может быть полезным при работе с датами и временем в SQL Server. Она позволяет быстро и легко находить разницу между двумя датами в заданных единицах измерения времени и использовать эту информацию в дальнейшей обработке данных.