繁体   English   中英

使用ACE Provider VB.Net将Excel日期转换为Sql Server日期时间格式

[英]Convert Excel Date to Sql Server Date Time format using ACE Provider VB.Net

我正在尝试将数据从Excel工作表批量导入到Sql Server数据库。 除电子表格中的“一个日期”字段外,其他所有内容均有效。 返回的日期与电子表格中的值相差四年。
示例:Excel工作表的日期为10/24/2010 14:18 ,但是当我查看查询中的列时,日期为10/23/2006 2:18 对于工作表中的每一行,都将这种模式提前4年零1天。

Excel列是自定义类型,格式为m/d/yyyy h:mm 我是从外部供应商处收到的,让他们更换色谱柱不是我最简单的解决方案。 我希望有人对此有所帮助,并可以指出正确的方向。

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

从MyWorksheet中选择[创建日期]

TIA。

我猜该电子表格是从Macintosh或默认情况下使用1904年日期系统的其他计算机生成的。 有关更多信息,请参见此处

至于解决方案,您可以在导入之前尝试切换工作簿的日期系统。 我从不需要处理这个问题,因此无法确定它是否可以工作,但是这里是VBA命令:

ActiveWorkbook.Date1904 = True

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

编辑:我意识到,如我上面建议的那样,更改日期系统只会在您的处理过程中向上移动问题,因此该错误在Excel中显而易见。 我认为为每个日期添加1,462(或4年零1天)是唯一的解决方案。

如果保持一致,则可以执行以下操作:

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

当然,您必须确保在列中的每一行都发生这种情况,并且最好找出问题的原因并加以解决。 我也不确定dataadd函数将在此处运行的级别。 它是sql服务器在提取数据后执行此操作,您会很好的。 但是,如果sql server将其作为ole查询传递给excel,则需要对dateadd函数调用进行一些调整。 高温超导

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM