Мое приложение хранит даты, поскольку Автоматизация OLE удваивается с DateTime. Команда ToOADate().
Теперь, я должен создать представление SQL, которое показывает мне сохраненную Дату. Как я могу быстро преобразовать вдвое большее по сравнению с датой?
Спасибо
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.