2

我有一个包含 DateField(DataType : Float) 的表

41477.637634537,
41477.6376233333,
41477.637631794

我需要这个日期时间 YY:MM:DD HH:MM:SS 格式

我尝试了 ALTER 功能

ALTER TABLE HISTORY
    ALTER COLUMN DATETIMESTAMP DATETIME

但是,虽然时间是对的,但它返回的日子却提前了一天。

我想然后使用

Select * from History
    where Tag LIKE '%tagname%' AND DateTimeStamp > '2013/7/24 14:23:00'

请建议我的 Alter 声明中是否有错误 - 或者是否有更好的方法来做到这一点?

4

1 回答 1

2

看起来您正在使用 Excel 日期。这些从“1900 年 1 月 0 日”(又名 1899-12-31)开始计算。

您可以通过将值添加到该日期来转换它们:

select cast('1899-12-31' as datetime) + 41477.637634537;

我不知道为什么内置转换会偏离 1。

编辑:

在 SQL Server 2008 上,以下返回三个日期和时间:

with t as (
      select 41477.637634537 as col union all
      select 41477.6376233333 union all
      select 41477.637631794
     )
select cast('1899-12-31' as datetime) + col
from t;
于 2013-07-25T02:52:48.400 回答