2010-10-04 3 views
24

Я пытаюсь преобразовать дату в datetime, но я получаю ошибки. Тип данных, из которого я конвертирую, равен (float, null), и я хотел бы преобразовать его в DATETIME.Преобразование INT в DATETIME (SQL)

Первая строка этого кода работает отлично, но я получаю эту ошибку во второй строке:

Arithmetic overflow error converting expression to data type datetime. 


CAST(CAST(rnwl_efctv_dt AS INT) AS char(8)), 
CAST(CAST(rnwl_efctv_dt AS INT) AS DATETIME), 
+0

Какой язык вы используете ? Можете ли вы показать нам значение (ы) rnwl_efctv_dt? –

ответ

32

вам нужно преобразовать в обугливается первый из-за преобразования в междунар добавляет эти дни в 1900-01-01

select CONVERT (datetime,convert(char(8),rnwl_efctv_dt)) 

вот некоторые примеры

select CONVERT (datetime,5) 

1900-01-06 00: 00: 00,000

select CONVERT (datetime,20100101) 

взрывается, потому что вы не можете добавить 20100101 дней 1900-01-01..you идти выше предела

новообращенный обугливается первый

declare @i int 
select @i = 20100101 
select CONVERT (datetime,convert(char(8),@i)) 
+0

Я делаю это для сотен тысяч строк. Есть ли что-то, что мне нужно, чтобы посмотреть? – Daniel

+0

Или я могу просто придерживаться этого права над моими призами (один из которых превращается в ваш первый конвертер)? – Daniel

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