Как происходит расчет для части даты MONTH в DATEADD()
Добавить месяц
SELECT '2012-01-29' AS [Date], CAST(DATEADD(MONTH, 1, '2012-01-31') AS DATE) AS NextDate
UNION
SELECT '2012-01-31' AS [Date], CAST(DATEADD(MONTH, 1, '2012-01-31') AS DATE) AS NextDate
UNION
SELECT '2013-01-31' AS [Date], CAST(DATEADD(MONTH, 1, '2013-01-31') AS DATE) AS NextDate
Результат
Вычесть месяц
SELECT '2012-02-29' AS [Date], CAST(DATEADD(MONTH, -1, '2012-02-29') AS DATE) AS PrevDate
UNION
SELECT '2012-03-01' AS [Date], CAST(DATEADD(MONTH, -1, '2012-03-01') AS DATE) AS PrevDate
Результат
Когда я добавляю месяц к датам 29,30,31 of Jan'2012
, я получаю тот же результат, что и February 29
. Для вычитания для даты 29 Feb'2012
отображается 29 Jan'2012
. Невозможно получить даты 30 & 31 of Jan'2012
.
Я хочу знать краткое объяснение.