2012-04-05 5 views
0

Я сохранил StartDate как тип данных nvarchar в формате гггг/мм/дд в моей базе данных. Когда я пытаюсь отбросить его на datetime, я получаю Arithematic Flow Error.Дата Время Ошибка в Sql

Что это за ошибка? Я пробовал и cast, и convert метод, но ошибка все еще бросается.

Вот мой код:

cast(Start_Date as datetime) && 
convert(datetime,Start_Date,103) 
+0

Хм. меня устраивает. –

+0

На самом деле я не был виновником. Наш лидер pjt разработал базу данных, и я был вынужден сделать это. Теперь тип данных не может быть изменен на datetime – ksg

+0

Можете ли вы опубликовать ** полный ** и повторяемый оператор SQL, который фактически дает «арифметический поток» ошибка"? –

ответ

2

Посмотрите CAST and CONVERT.

103 является dd/mm/yyyy так что это будет не в состоянии

declare @S varchar(10) 
set @S = '2012/03/31' 
select convert(datetime, @S, 103) 

Попробуйте вместо

select convert(datetime, replace(@S, '/', ''), 112) 

Ваш бросок потерпит неудачу, если у вас есть SET DATEFORMAT как dmy.

set dateformat dmy 

declare @S varchar(10) 
set @S = '2012/03/31' 
select cast(@S as datetime) 

Но будет работать нормально, если вы используете ymd вместо этого.

0
declare @TestDateValue nvarchar(50) 
set @TestDateValue = '2012/12/03' 
select cast(@TestDateValue as datetime) as NewTestDateTime 

Ваш код должен работать. Я только что привел пример здесь. Можете ли вы опубликовать строку, которую вы пытаетесь преобразовать. COOLD должен быть чем-то с этим.

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