Как преобразовать значение даты автоматизации OLE в дату в SQL Server - PullRequest
9 голосов
/ 19 июля 2010

Мое приложение сохраняет даты, поскольку OLE Automation удваивается с командой DateTime.ToOADate ().

Теперь мне нужно создать представление SQL, которое показывает мне сохраненную дату. Как я могу быстро конвертировать двойные в дату?

Спасибо

1 Ответ

9 голосов
/ 19 июля 2010

ли

SELECT CAST(CASE WHEN OLEFLOAT > 0 THEN 
                         OLEFLOAT-2.0 
                 ELSE 
       2*CAST(OLEFLOAT AS INT) - 2.0 +  ABS(OLEFLOAT) END as datetime)

работа? С здесь

Реализована дата автоматизации OLE. как число с плавающей запятой, чье неотъемлемой составляющей является число дней до или после полуночи 30 Декабрь 1899 г. и чей дробный Компонент представляет время на этом день делится на 24. Например, полночь, 31 декабря 1899 г. представлен 1,0; 6 утра, 1 января 1900 представлен 2,25; полночь, 29 декабря 1899 года представлен -1,0; и 6 часов утра 29 декабря 1899 года - -1,25.

Это звучит почти так же, как та же система, которую использует SQL Server, когда вы приводите дату в виде числа с плавающей запятой, за исключением того, что необходимо сместить 2 и для «отрицательных» дат. SQL-сервер будет вычитаться в обратном направлении. Таким образом, -1.25 - это 18:00, тогда как для OLE это означает 06:00.

...