我有一个包含 DateField(DataType : Float) 的表
41477.637634537, 41477.6376233333, 41477.637631794
I need this in datetime YY:MM:DD HH:MM:SS format
I tried the ALTER function
ALTER TABLE HISTORY
ALTER COLUMN DATETIMESTAMP DATETIME
但是,尽管时间是正确的,但它返回的日期却提前了一天。
我想然后使用
Select * from History
where Tag LIKE '%tagname%' AND DateTimeStamp > '2013/7/24 14:23:00'
请建议我的 Alter 语句中是否存在不正确的地方 - 或者是否有更好的方法来做到这一点?
最佳答案
您似乎正在使用 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;
关于sql-server - 如何将浮点列转换为日期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17848074/