почему в случае сбоя при изменении даты
Мне нужно вернуть 1
между 1-м и 14-м и first day of next month
для любого другого, исходя из текущего дня.
Я могу запустить очень простой случай, когда оператор:
select case when datepart(d, getdate()) between 2 and 14 then '1' else '1st next month' end
который возвращает 1 или 1 следующий месяц, как и ожидалось, и я также могу получить фактический первый день следующего месяца легко:
select DATEADD(d, 1, EOMONTH(getdate()))
но когда я его совмещаю. Он ничего не возвращает – нет ошибок и никаких результатов независимо от того, какой день сегодня
select case when datepart(d, getdate()) between 2 and 14 then '1' else DATEADD(d, 1, EOMONTH(getdate())) end
вы знаете, почему?
Чтобы избежать несоответствия типов данных, выведите их как текст:
select case when datepart(d, getdate()) between 2 and 14 then '1' else convert(varchar, DATEADD(d, 1, EOMONTH(getdate())),120) end