Подтвердить что ты не робот

Преобразование 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),
4b9b3361

Ответ 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))