客户将数据库从 SQL Server 2000 迁移到 2012。
他们的申请后来遇到了麻烦。原因是以下函数调用:
SELECT {fn curtime() }
在 SQL 2000 上返回日期 + 时间('2017-01-20 07:24:26.997'),但在 SQL 2012 上只返回时间部分('07:24:26.997')。
兼容模式不能再设置为 90 (SQL 2005)。
鉴于无法更改应用程序,是否有其他解决方案可以解决此问题?
客户将数据库从 SQL Server 2000 迁移到 2012。
他们的申请后来遇到了麻烦。原因是以下函数调用:
SELECT {fn curtime() }
在 SQL 2000 上返回日期 + 时间('2017-01-20 07:24:26.997'),但在 SQL 2012 上只返回时间部分('07:24:26.997')。
兼容模式不能再设置为 90 (SQL 2005)。
鉴于无法更改应用程序,是否有其他解决方案可以解决此问题?
简短的回答是,如果不更改应用程序,就无法解决此问题。
那
{fn curtime() }
是SQL Server 确实解释的ODBC 标量函数,但实际上不应该在本机使用。改用
GetDate()
。(我想你可以
{fn curdate() }
结合使用{fn curtime() }
)我还没有安装 SQL 2000(那是 17 年前的事了!),所以无法测试 {fn curtime() } 当时的情况,但我假设它只会返回时间。也许不是,但现在没什么区别——你有点卡住了。
唯一的选择是更改应用程序。理由不应该太难——一个只能在 SQL Server 2000 上运行的应用程序是不可接受的,它已经失去支持很长时间了——它是一个有 17 年历史的系统。
这篇较早的帖子类似,答案很好,并提供了更多信息。
这真的不相关,但我会添加它(你可以忽略这一点):
curtime()
是MySql 中的内置函数。你的案例绝对是 ODBC 语法,但它类似于 MySql 的语法,所以我想我会把它添加为琐事。