Использование cast или convert для преобразования отрицательных значений int в datetime в SQL Server

#sql-server #sql-server-2005 #casting

#sql-сервер #sql-server-2005 #Кастинг

Вопрос:

У меня есть несколько отрицательных целых значений, которые являются смещением от даты по умолчанию 1-1-1900. Я должен получить значения datetime из этих. Как я могу это сделать.

Пример:

Если я сделаю:

 SELECT convert(datetime, 53691) as Calc

OR

SELECT cast(53691 as datetime)
  

Я получаю: 2047-01-01 00:00:00.000

Что мне нужно, так это то, что если я сделаю:

 SELECT convert(datetime, -53691) as Calc

OR

SELECT cast(-53691 as datetime)
  

Я должен получить что-то вроде:

 1753-01-01 00:00:00.000
  

Ответ №1:

-53690 будет равно 1753-01-01. -53691 выводит вас за пределы диапазона типа данных datetime (который не поддерживает даты до 1753). Приведение -53690 работает так же, как и в других ваших примерах.