Преобразование INT в DATETIME (SQL)
Я пытаюсь преобразовать дату в datetime, но получаю ошибки. Тип данных, из которого я конвертирую, равен (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),
Ответы
Ответ 1
вам нужно сначала преобразовать в char, потому что преобразование в 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.. вы переходите выше предела
конвертировать в char первый
declare @i int
select @i = 20100101
select CONVERT (datetime,convert(char(8),@i))
Ответ 2
Попробуйте это:
select CONVERT(datetime, convert(varchar(10), 20120103))