将Excel中的数据插入SQL表后,为什么会出现1900-01-01 00:00:00.000?

时间:2019-07-10 15:53:41

标签: sql vba

我正在尝试将工作表中的日期插入到SQL表格中。工作表中日期的原始来源是从到sql的连接,并且使用Cast(interview_date作为日期)设置了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。

谢谢您的帮助。

我已经尝试在VBA中将cdate()和datevalue()插入到...

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

2 个答案:

答案 0 :(得分:0)

基于我所看到的,我很惊讶INSERT语句成功执行,而日期字段为空,但是让我跳出来的是-您需要将日期值用单引号引起来包装你的弦。即使您将它们DIM设置为Date类型,当您将它们与其他字符串连接起来组成insert语句时,它们也会被转换为字符串。

您的Values子句的开头应如下所示:

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

我建议-与其将命令字符串与执行它的调用放在同一行

oCon.Execute "Insert into [Interview_Info]

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

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

答案 1 :(得分:0)

我解决了。

我一定需要午睡!

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

一切正常。