В настоящее время я использую следующий код для определения периода между двумя датами в месяцах и днях:
DECLARE @date1 DATETIME = '2009-01-01 00:00:00'
DECLARE @date2 DATETIME = '2010-06-30 00:00:00'
SELECT CAST(DATEDIFF(mm, @date1, @date2) AS VARCHAR(6)) + ' Months ' + CAST(DATEDIFF(dd, DATEADD(mm, DATEDIFF(mm, @date1, @date2), @date1), @date2) AS VARCHAR(2)) + ' Days'
Проблема в том, что код, кажется, не считает последний день, поэтому Вышеуказанное возвращает 17 месяцев 29 дней, тогда как необходимое мне возвращение составляет 18 месяцев.
Аналогично следующему:
DECLARE @date1 DATETIME = '2020-01-01 00:00:00'
DECLARE @date2 DATETIME = '2020-01-31 00:00:00'
SELECT CAST(DATEDIFF(mm, @date1, @date2) AS VARCHAR(6)) + ' Months ' + CAST(DATEDIFF(dd, DATEADD(mm, DATEDIFF(mm, @date1, @date2), @date1), @date2) AS VARCHAR(2)) + ' Days'
возвращает 0 месяцев 30 дней вместо одного месяца.
Есть ли способ изменить вышеперечисленное, чтобы распознать целые месяцы, в которых число дней равно месяцу, а также считать последний день?
Спасибо