在SQL Server中错误地转换为日期时间
在Excel中,当我将这些'常规'数字转换为日期时,这就是他们真正的日期,我得到的数字与我在SQL Server中的CONVERT()
不同。数据来自导入。在SQL Server中错误地转换为日期时间
General Excel conversion to date SQL Server conversion to datetime
37621 31-12-2002 2003-01-02 00:00:00.000
39082 31-12-2006 2007-01-02 00:00:00.000
39447 31-12-2007 2008-01-02 00:00:00.000
etc.
我怎样才能得到真正的日期在Excel与SQL Server中的查询?如前所述,我已经使用了CONVERT(datetime, [General])
,但是后来我得到了SQL Server转换为datetime的结果。
要将Excel值转换为日期
Select DateAdd(DAY,General,'1899-12-30')
From YourTable
示范
Declare @YourTable Table ([General] int,[Excel conversion to date] varchar(50))
Insert Into @YourTable Values
(37621,'31-12-2002')
,(39082,'31-12-2006')
,(39447,'31-12-2007')
Select *
,DateAdd(DAY,[General],'1899-12-30')
from @YourTable
返回
General Excel conversion to date (No column name)
37621 31-12-2002 2002-12-31 00:00:00.000
39082 31-12-2006 2006-12-31 00:00:00.000
39447 31-12-2007 2007-12-31 00:00:00.000
约翰,我感谢你的回答。但是,当我使用上面的SELECT语句时,它似乎不适用于我...我只需要用我的真实列名称替换'General'对吧? – PRIME
@PRIME正确。这是为了演示如何通过DateAdd()将Excel日期值转换为SQL Server日期() –
@JohnCappelletti为什么1899-12-30? –
什么是'转换()'代码使用的是在SQL Server中?数据来自哪里?一张桌子?进口? – ollie
Excel/Windows和SQL Server有不同的日子。关两天。 IIRC,这是Windows V1中的一个原始错误(我怀疑它实际上是两个不同的错误组合)。 – RBarryYoung