У меня есть огромные вычисления, происходящие в SQL на основе дат и лет. Когда я добавляю месяцы к дате, это не добавление по дням, в основном добавление 3 месяцев (это функциональность этих функций).Проблема с функцией DATEADD
например SELECT DATEADD(month, 4, '2016-10-25')
. Это выбор того, что я ожидаю, что 2017-02-25
но когда я это сделаю DATEADD(month, 4, '2016-10-30')
. Его выбор 2017-02-28. Это не то, чего я ожидаю. Я знаю, что эта функция просто добавляет несколько месяцев и доводит ее до последнего дня того месяца.
В этом случае, если бы я хотел видеть вывод как 2016-02-30, это было бы возможно, потому что я знаю, что дата не существует. или мы сможем запрограммировать его на возврат 2017-03-01 вместо 2017-02-28. (Это становится большой проблемой в течение високосного года, так как у нас есть 29 февраля)
Я очень ценю ваш ответ на это. Спасибо.
но что бы результат, который вы на самом деле хотите ?. Возможно, вам захочется добавить дни вместо этого, но вам придется иметь дело с несколькими месяцами, у которых есть 28, другие 30, 31 .... – Lamak
, пожалуйста, укажите, почему вы добавляете месяцы и какова цель с результатом, поэтому вы можете получить подходящий ответ – Tanner
'2016-02-30' недействительная дата. Он должен вернуться 29-го февраля в високосный год, хотя ... вы пробовали это? 2016 - високосный год, а не 2017. Я согласен с подходом к дням, если это то, что вам нужно. несколько месяцев имеют 31 день назад (июль и август, декабрь и январь), поэтому месяцы не кажутся постоянным интервалом, если вы ожидаете этой функциональности. – ps2goat