Конвертировать INT в DATETIME (SQL)

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

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

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),
 Chris Adragna04 окт. 2010 г., 16:00
Какой язык вы используете? Можете ли вы показать нам значение (я) rnwl_efctv_dt?

Ответы на вопрос(1)

Решение Вопроса

потому что преобразование в int добавляет эти дни к 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 .. вы превышаете лимит

сначала преобразовать в символ

declare @i int
select @i = 20100101
select CONVERT (datetime,convert(char(8),@i))
 Daniel04 окт. 2010 г., 16:10
Я делаю это для сотен тысяч строк. Есть ли что-то, что я должен высматривать?
 Daniel04 окт. 2010 г., 16:10
Или я могу просто прикрепить это прямо над моими приведениями (один из которых превращается в ваше первое утверждение преобразования)?

Ваш ответ на вопрос