2015-08-20 2 views
1
update calendar 
set duedate = DATEADD(mm,1,duedate) 
from calendar as t1 
inner join events as t2 
on t1.person = t2.[person] 
where t2.catastrophy ='FamilyDeath' 

Я хочу отложить duedate на один месяц, если есть семейная смерть.Обновление сервера sql с использованием формата dateadd

Мои даты даны в формате 30.04.2015. Я бегу приведенный выше запрос, и он будет считать дату и изменить его до 30 мая 201. Если я пытаюсь запустить его снова, я получаю сообщение об ошибке с указанием:

«Преобразование типа VARCHAR данных в DateTime тип данных привел к превышению значения ».

+0

Каков тип данных столбца 'duedate'? –

+0

тип данных char (10) – lefeal

ответ

1

Я думаю, потому что тип char (10), вы получаете конверсию, которую вы не хотите. Вы конвертируете из CHAR в datetime, а затем просто сохраняете это как CHAR. Когда вы делаете DATEADD, попробуйте положить его обратно в нужный формат CHAR, как это:

set duedate = convert(char(10),dateadd(mm,1,dueDate),101) 

CONVERT позволяет указать формат, и 101 «мм/дд/гггг»

https://msdn.microsoft.com/en-us/library/ms187928.aspx

Смежные вопросы