如何将OLE自动化日期值转换为SQL Server中的日期

Nun*_*ito 9 sql sql-server double datetime

我的应用程序存储日期,因为OLE自动化与DateTime.ToOADate()命令加倍.

现在,我需要创建一个SQL视图,它向我显示存储的日期.如何快速将双倍转换为日期?

谢谢

Mar*_*ith 9

是否

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

工作?从这里开始

OLE自动化日期被实现为它的整体部件是前或午夜后的天数一个浮点数,1899年12月30日,并且其小数部分表示由24划分.例如,当天的时间,午夜,12月31日1899代表1.0; 1900年1月1日上午6点由2.25表示; 1899年12月29日午夜以-1.0表示; 1899年12月29日上午6点用-1.25表示.

这听起来很像同一系统SQL Server使用,当你施放一个日期作为一个浮动除偏移需要通过2和"负"日期被拨弄.SQL服务器将向后减去.所以-1.25是18:00而OLE则表示06:00.