Конвертировать INT в DATETIME (SQL) - PullRequest
30 голосов
/ 04 октября 2010

Я пытаюсь преобразовать дату в дату и время, но получаю ошибки. Тип данных, из которого я преобразую, (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 Ответ

40 голосов
/ 04 октября 2010

сначала нужно преобразовать в 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.

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

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