Как я могу преобразовать значение Даты Автоматизации OLE в дату в SQL Server

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

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

Спасибо

9
задан marc_s 19 July 2010 в 05:09
поделиться

1 ответ

Does

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

work? От здесь

Дата OLE Automation реализована как число с плавающей точкой, чья интегральная составляющая - это количество дней до или после полуночи, 30 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 Server будет вычитать в обратном направлении. Таким образом, -1.25 - это 18:00, тогда как для OLE это означает 06:00.

9
ответ дан 4 December 2019 в 21:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: