将Access DB中的日期插入SQL Server 2008R2

时间:2016-01-14 07:38:31

标签: sql-server vba datetime ms-access-2010

这似乎是一项简单的任务,但我失败了,并没有找到解决我的问题的方法:我在Access 2010中有一个带有日期/时间列的本地表,我想要更新SQL Server表中的列数据类型date

将日期/时间值直接发送到SQL Server表失败,与使用此VBA函数转换日期/时间列相同:

Function DateForSQL(dteDate) As String
DateForSQL = "'" & Format(CDate(dteDate), "yyyy-mm-dd") & "'"
End Function

给出了

DateForSQL(Date()) = '2016-01-14'

并且应该有用,我猜想。

更新命令是:

UPDATE SQL_table 
INNER JOIN local_table ON SQL_table.ID = local_table.ID 
SET SQL_table.DateField = DateForSQL(local_table.DateField)

但它在Access中再次失败并出现类型转换错误。

即使将SQL Server表列更改为datetime,我也会收到相同的错误。

向SQL发送类似于' 14/01/2016'的字符串。或者' 01/14/2016'。

我唯一可以做的 - 最终 - 是将日期时间更改为Access中的文本并重试,但这可能不是唯一的解决方案。

任何帮助?

由于 迈克尔

1 个答案:

答案 0 :(得分:1)

首先,我建议您使用 ISO-8601 格式作为您的日期 - YYYYMMDD(没有破折号,没有任何内容) - 这适用于所有区域& SQL Server中的语言设置。

接下来,我不确定Access' SQL语法,但在SQL Server中,您的UPDATE语句将是这样的:

UPDATE sql
SET sql.DateField = DateForSQL(local_table.DateField)
FROM local_table local 
INNER JOIN SQL_table sql ON local.ID = sql.ID 

首先UPDATE,然后SET,然后是FROMINNER JOIN ......