我的应用程序将日期保存为OLE Automation,并使用DateTime.ToOADate()命令。
现在,我需要创建一个SQL视图,它向我显示存储的日期。如何快速将双倍转换为日期?
由于
答案 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。