在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的结果。

+0

什么是'转换()'代码使用的是在SQL Server中?数据来自哪里?一张桌子?进口? – ollie

+0

Excel/Windows和SQL Server有不同的日子。关两天。 IIRC,这是Windows V1中的一个原始错误(我怀疑它实际上是两个不同的错误组合)。 – RBarryYoung

要将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 
+0

约翰,我感谢你的回答。但是,当我使用上面的SELECT语句时,它似乎不适用于我...我只需要用我的真实列名称替换'General'对吧? – PRIME

+0

@PRIME正确。这是为了演示如何通过DateAdd()将Excel日期值转换为SQL Server日期() –

+0

@JohnCappelletti为什么1899-12-30? –