将Exceldate转换为使用ACE提供程序VB.Net的Sql Serverdate时间格式

我正在尝试从一个Excel工作表中批量导入数据到Sql Server数据库。 除了电子表格中的一个date字段以外,一切都可以使用。 返回的date与电子表格中的值相差四年。
示例:Excel工作表的date为10/24/2010 14:18 ,但是当我查看查询中的列时,date是2006年10月23日10/23/2006 2:18 。 对于工作表中的每一行重复4年和1天之前的这种模式。

Excel列在我看来是一个自定义types,格式为m/d/yyyy h:mm 。 我从外部供应商那里收到这个信息,让他们改变列不会是我最简单的解决scheme。 我希望有人与此合作,可以指引我正确的方向。

对于它的价值,查询的相关部分是:

从MyWorksheet中select[创builddate]

TIA。

我猜测电子表格是从Macintosh或其他一些默认使用1904年date系统的计算机生成的。 在这里看到更多的信息。

至于解决scheme,您可以尝试在导入之前切换工作簿的date系统。 我从来没有处理这个,所以不能确定它会工作,但这里的VBA命令来做到这一点:

 ActiveWorkbook.Date1904 = True 

或者,正如上面链接的文章所述,您可以在每个date添加1,462。

编辑:我意识到,改变date系统,正如我上面所build议的,只会将您的过程中的问题,以便在Excel中明显的错误。 我认为每个date增加1462(或4年1天)是唯一的解决scheme。

如果这是一致的,你可以这样做:

 Select DateAdd(dd,1, DateAdd(yy,4,[Date Created])) From MyWorksheet 

当然,你必须确定这个情况发生在列中的每一行,最好是find问题的原因并解决这个问题。 我也不确定dataadd函数在什么级别运行。 它的SQL服务器拉动数据后,你会没事的。 但是,如果sql服务器通过这个excel作为一个ole查询然后dateadd函数调用需要调整一下。 HTH