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

时间:2010-07-19 00:10:09

标签: sql sql-server datetime double

我的应用程序将日期保存为OLE Automation,并使用DateTime.ToOADate()命令。

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

由于

1 个答案:

答案 0 :(得分:9)

确实

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

工作?来自here

  

实现了OLE自动化日期   作为一个浮点数   积分成分是数量   在午夜之前或之后的几天,30   1899年12月,其分数   component表示该时间   一天除以24.例如,   1899年12月31日午夜   以1.0表示; 1月1日上午6点   1900年代表2.25;午夜,   1899年12月29日由代表   -1.0;和1899年12月29日上午6点用-1.25表示。

这听起来非常类似于SQL Server在将日期转换为浮点数时使用的相同系统,除了偏移需要由2和“负”日期进行摆弄。 SQL服务器将向后减去。所以-1.25是18:00而OLE则表示06:00。