将带有链接表的Access应用程序转换为SQL Server 2014

时间:2015-02-17 01:16:14

标签: sql-server ms-access sql-server-2014

我们有一个使用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数据库的查询的访问查询。

2 个答案:

答案 0 :(得分:0)

SQL Server不使用MS Access日期格式,尤其是使用#时。 Date functions in SQL Server的格式如下:

  • 日期 - 格式YYYY-MM-DD
  • DATETIME - 格式:YYYY-MM-DD HH:MI:SS
  • SMALLDATETIME - 格式:YYYY-MM-DD HH:MI:SS
  • TIMESTAMP - 格式:唯一编号

此外,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