小编典典

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

sql

我的应用程序存储日期,因为OLE Automation使用该DateTime.ToOADate()命令将其加倍。

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


阅读 244

收藏
2021-04-22

共1个答案

小编典典

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

工作?从这里

OLE自动化日期被实现为浮点数,其整数部分是1899年12月30日午夜之前或之后的天数,其小数部分代表该天的时间除以24。例如,12月31日午夜1.0代表1899;1900年1月1日上午6点以2.25表示;1899年12月29日午夜以-1.0表示;1899年12月29日上午6点由-1.25表示。

这听起来很像SQL Server在将日期强制转换为浮点数时所使用的系统,所不同的是偏移量需要乘以2以及“负”日期。SQL
Server将向后减去。因此-1.25是18:00,而OLE则是06:00。

2021-04-22