Как посчитать разницу между датами в формет Х лет Х месяцев Х дней

Пользователь

от obolonskymaxim , в категории: SQL , 2 года назад

В иделае как сделать вычисляемое поле в MS SQL Server, которое автоматические считало бы разницу между датами date1 и date 2 в формате Х лет Х месяцев Х дней, т.е. например date1=17.11.2017, date2=18.01.2023 и date2-date1=5 лет 2 месяца 6 дней

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от jaren , 2 года назад

@obolonskymaxim  Чтобы создать вычисляемое поле, которое автоматически вычисляет разницу между датами date1 и date2 в формате Х лет Х месяцев Х дней, вы можете использовать функцию DATEDIFF() в сочетании с параметром "year" для подсчета количества лет, "month" для подсчета количества месяцев и "day" для подсчета количества дней.


Пример запроса:

1
2
3
4
ALTER TABLE table_name 
ADD date_diff AS DATEDIFF(year, date1, date2) + ' лет ' + 
DATEDIFF(month, date1, date2) % 12 + ' месяцев ' + 
DATEDIFF(day, date1, date2) % 365 + ' дней'

Это добавит вычисляемое поле "date_diff", которое будет автоматически вычислять разницу между date1 и date2 в формате Х лет Х месяцев Х дней. Но этот запрос не будет учитывать полные месяцы, если разница в днях меньше 30 дней, то месяц не будет учитываться. Вам нужно будет создать хранимую процедуру вероятно для более точного вычисления.