我们有一个使用SQL Server 2000 ODBC DSNless链接表的Access应用程序。我们正在升级到SQL Server 2014,我正在使用连接字符串
ODBC;DRIVER=SQL Server;..." to ODBC;DRIVER=SQL Server Native Client 11.0;...
应用程序在转换后工作,除非我尝试使用此where子句在此WHERE
子句上运行查询时运行查询:
WHERE [Expiration Date] < #8/17/2015#
错误消息是
ODBC调用失败:从字符串转换日期和/或时间时转换失败。 (#241)
更新:使用where子句的查询是基于查询SQL Server数据库的查询的访问查询。
答案 0 :(得分:0)
SQL Server不使用MS Access日期格式,尤其是使用#
时。 Date functions in SQL Server的格式如下:
此外,MS Access的JET / ACE SQL引擎是与SQL Server不同的SQL方言,因此每个查询语句可能不兼容。如果将SQL Server迁移到Oracle,MySQL,PostgreSQL,db2以及其他人,则会出现这种情况。
答案 1 :(得分:0)
如果SQL Server中的列格式是DateTime而不是DateTime2,请尝试以下
WHERE Format([Expiration Date],"dd-mmm-yyyy") < Format(#8/17/2015#,"dd-mmm-yyyy")
或
Datediff("d",Format([Expiration Date],"dd-mmm-yyyy"), Format(#8/17/2015#,"dd-mmm-yyyy")) < 0