为什么将数据从 excel 插入 SQL 表后会出现 1900-01-01 00:00:00.000?

  • 本文关键字:1900-01-01 数据 SQL 插入 excel sql vba
  • 更新时间 :
  • 英文 :


>我正在尝试将工作表中的日期插入到SQL中的表中。工作表中日期的原始来源来自与 sql 的连接,并且日期字段已使用 Cast(interview_date 作为日期)进行设置,但是一旦填充工作表,我需要插入回 SQL 中的另一个表。当我这样做时,我在表的日期字段(即日期时间)中得到 1900-01-01 00:00:00.000。我提取的 excel 日期格式是 yyyy-mm-dd,在我插入的 Sql 表上也是如此。

我已经在VBA中尝试了以下插入,有问题的3个字段是sdate_confirmed,sdate_interview和rundate。

我已将这些字段声明为

Dim sForename As String
Dim sSurname As String
Dim sdate_confirmed As Date
Dim sdate_interview As Date
Dim sNumerator1 As Integer
Dim sDenominator1 As Integer
Dim sNumerator2 As Integer
Dim sDenominator2 As Integer
Dim sNumerator3 As Integer
Dim sDenominator3 As Integer
Dim sRundate As Date
Dim sDO_NOT_DELETE As Integer

我正在使用 Excel 2010 和 SQL Server 2012。

提前感谢您的任何帮助。

我已经尝试了 cdate() 和日期值 在 VBA 插入到...

Excel 工作表中没有空日期或缺少日期。

oCon.Execute "Insert into [Interview_Info].[dbo].Interview (Forename,Surname,date_confirmed,date_interview,Numerator1,Denominator1,Numerator2,Denominator2,Numerator3,Denominator3,Rundate,DO_NOT_DELETE) " & _
"Values ('" & sForename & "','" & sSurname & "'," & sdate_confirmed & "," & sdate_interview & ",'" & sNumerator1 & "','" & sDenominator1 & "','" & sNumerator2 & "','" & sDenominator2 & "','" & sNumerator3 & "','" & sDenominator3 & "'," & sRundate & ",'" & sDO_NOT_DELETE & "')"

我希望Excel字段中的日期将入到[Interview_Info].[dbo].Interview将具有正确的日期,如excel工作表所示而不是1900-01-01 00:00:00.000

我解决了。

我一定需要小睡一会儿!

我保留了原始脚本并修复了格式。

这一切都有效。

根据我所看到的,我很惊讶 INSERT 语句成功执行并将日期字段留空,但让我跳出的是 - 您需要以包装字符串的方式将日期值包装在单引号中。即使您将它们显示为 Date 类型,当您将它们与其他字符串连接起来以构成插入语句时,它们也会被转换为字符串。

值子句的开头应如下所示:

"Values ('" & sForename & "','" & sSurname & "','" & sdate_confirmed & "',"' & sdate_interview & "','" & ...

我建议 - 而不是将命令字符串与执行它的调用连接在同一行

oCon.Execute "Insert into [Interview_Info]

将命令字符串连接到一个变量中,您可以在执行之前检查该变量(以确保日期值括在单引号中)。

string cmd = "Insert into [Interview_Info]...
oCon.Execute cmd

最新更新