将 Access 数据库中的日期插入 SQL Server 2008R2
Inserting date from Access DB into SQL Server 2008R2
这似乎是一件容易的事,但我失败了,没有找到解决我的问题的方法:我在 Access 2010 中有一个本地 table,其中有一个 date/time 列,我想更新SQL 服务器 table 中数据类型为 date
.
的列
将 date/time 值直接发送到 SQL 服务器 table 失败,与使用此 VBA 函数转换 date/time 列相同:
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 服务器 table 列更改为日期时间,我也会遇到同样的错误。
与向 SQL 发送类似“14/01/2016”或“01/14/2016”的字符串相同。
我唯一能做的 - 最终 - 是在 Access 中将日期时间更改为文本,然后重试,但这不是唯一的解决方案。
有什么帮助吗?
谢谢
迈克尔
首先,我建议您的日期使用 ISO-8601 格式 - 即 YYYYMMDD
(没有破折号,什么也没有) - 这适用于所有人SQL 服务器中的区域和语言设置。
接下来,我不确定 Access 的 SQL 语法,但在 SQL 服务器中,您的 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
,然后是 FROM
和 INNER JOIN
...
这似乎是一件容易的事,但我失败了,没有找到解决我的问题的方法:我在 Access 2010 中有一个本地 table,其中有一个 date/time 列,我想更新SQL 服务器 table 中数据类型为 date
.
将 date/time 值直接发送到 SQL 服务器 table 失败,与使用此 VBA 函数转换 date/time 列相同:
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 服务器 table 列更改为日期时间,我也会遇到同样的错误。
与向 SQL 发送类似“14/01/2016”或“01/14/2016”的字符串相同。
我唯一能做的 - 最终 - 是在 Access 中将日期时间更改为文本,然后重试,但这不是唯一的解决方案。
有什么帮助吗?
谢谢 迈克尔
首先,我建议您的日期使用 ISO-8601 格式 - 即 YYYYMMDD
(没有破折号,什么也没有) - 这适用于所有人SQL 服务器中的区域和语言设置。
接下来,我不确定 Access 的 SQL 语法,但在 SQL 服务器中,您的 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
,然后是 FROM
和 INNER JOIN
...