Sql-Server-2012

從 2000 年遷移到 2012 年之後的 ODBC Curtime() 省略了 datepart

  • January 20, 2017

客戶端將數據庫從 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 類似,所以我想將其添加為瑣事。

引用自:https://dba.stackexchange.com/questions/161722