Вычисление разницы между двумя датами — обычная задача в SQL. Однако иногда нам нужно определить разницу только в годах, а не считать дни, месяцы или часы. В этой статье блога мы рассмотрим несколько методов расчета разницы в годах в SQL, а также приведем примеры кода для каждого подхода.
Метод 1: функция DATEDIFF
Функция DATEDIFF — это широко поддерживаемая функция SQL, которая вычисляет разницу между двумя датами в указанном интервале. Чтобы вычислить разницу в годах, мы можем использовать интервал «год» и обрезать результат, удалив любые дробные части.
SELECT YEAR(CURRENT_DATE) - YEAR(date_column) AS year_diff
FROM your_table;
Метод 2: функция EXTRACT
Функция EXTRACT — это еще одна функция SQL, которая позволяет извлекать определенные части даты, например год. Мы можем извлечь год из обеих дат и вычесть их, чтобы получить разницу в годах.
SELECT EXTRACT(YEAR FROM CURRENT_DATE) - EXTRACT(YEAR FROM date_column) AS year_diff
FROM your_table;
Метод 3: функция DATEPART (для SQL Server)
Если вы используете Microsoft SQL Server, вы можете использовать функцию DATEPART, чтобы извлечь год из обеих дат и вычислить разницу годов.
SELECT DATEPART(YEAR, CURRENT_DATE) - DATEPART(YEAR, date_column) AS year_diff
FROM your_table;
Метод 4: функция TIMESTAMPDIFF (для MySQL)
Если вы используете MySQL, вы можете использовать функцию TIMESTAMPDIFF для вычисления разницы между двумя временными метками в указанной единице измерения. В этом случае мы можем указать единицу измерения «год».
SELECT TIMESTAMPDIFF(YEAR, date_column, CURRENT_DATE) AS year_diff
FROM your_table;
Метод 5: множественное вычитание дат
Этот метод включает в себя вычитание годовых частей двух дат и корректировку результата в зависимости от месяца и дня. Для этого требуется немного больше кода, но он может быть полезен в ситуациях, когда вышеупомянутые методы недоступны.
SELECT
YEAR(CURRENT_DATE) - YEAR(date_column) -
CASE
WHEN MONTH(CURRENT_DATE) < MONTH(date_column) THEN 1
WHEN MONTH(CURRENT_DATE) = MONTH(date_column) AND DAY(CURRENT_DATE) < DAY(date_column) THEN 1
ELSE 0
END AS year_diff
FROM your_table;
В этой статье мы рассмотрели несколько методов расчета разницы в годах между двумя датами в SQL. В зависимости от используемой вами системы базы данных вы можете выбрать подходящий метод, соответствующий вашим потребностям. Независимо от того, предпочитаете ли вы простоту функции DATEDIFF, гибкость функции EXTRACT или конкретные функции, предоставляемые вашей системой базы данных, с помощью этих примеров кода можно вычислить только разницу в годах.