Если это новая хранимая процедура (или нет какие-либо другие коды, использующие его), лучше всего, чтобы изменить переменные типа Дата. Потому что if you comparing data by date
вы должны сравнитьDates not varchar values
.
Если вы хотите изменить тип переменной, то вы можете добавить день, используя функцию DATEADD()
, как показано ниже.
--if @enddate is a date type
select @enddate = dateadd(day,1,@enddate)
Если вы CANNOT
изменить типы переменных, то лучше передать их в ISO format
(то есть; yyyymmdd
), потому что ваш текущий формат строки культура специфичны и запрос может потерпеть неудачу в сервере с другой культурой.
--date pass as yyyymmdd (not culture specific)
select @enddate = convert(varchar(10),
dateadd(day, 1, convert(date, @enddate)), 101)
--date pass as mm/dd/yyyy (US culture)
select @enddate = convert(varchar(10),
dateadd(day, 1, convert(date, @enddate,101)), 101)
Проверьте свой вопрос. После обновления вы также упоминали тот же результат. Вы имеете в виду, что 03/05/2013? –
Вы изучали использование ** DATEADD ** вместе с ** CONVERT **? –
Есть ли причина, по которой вы не используете тип данных даты? Затем вы можете просто использовать функцию dateadd(), чтобы добавить один день. – steoleary