我的本地 SQL Server 2016 安裝程式在重新安裝后決定不接受 YMD 日期格式。例如,以下查詢在我同事的設定中過去和現在都被接受:
SELECT "id"
FROM test.dbo.tabEmp
WHERE "DateAdmission" <= '2021-12-31' AND "DateAdmission">= '2021-12-30' `
當我嘗試運行它時,我看到:
將 varchar 資料型別轉換為 datetime 資料型別導致值超出范圍
但是,如果我按照格式將日期重寫為2021-31-12and 2021-12-30,則YYYY-DD-MM它們會被接受。
我無法真正轉換或格式化它,因為我們系統中的 sql 查詢數量眾多,而且以幾乎不可能的方式完成。有什么可以做的嗎?我嘗試更改 Windows 的日期格式,但無濟于事。
uj5u.com熱心網友回復:
重新安裝后,您的新資料庫實體似乎選擇了一種新語言。
當前語言設定決定了所有系統訊息所使用的語言,以及要使用的日期/時間格式。
日期格式設定會影響字串的解釋,因為它們被轉換為日期值以存盤在資料庫中。它不影響存盤在資料庫中的日期資料型別值的顯示或存盤格式。
您可以運行以下陳述句來回傳當前使用的語言:
SELECT @@LANGUAGE;
這將告訴我們當前的語言是什么和日期格式(以及其他一些東西):
DBCC USEROPTIONS;
日期格式可通過以下陳述句修改:
SET LANGUAGE us_english;
SET DATEFORMAT YMD;
這是一篇關于該主題的好文章:如何更改 SQL Server (T-SQL) 中的當前日期格式
還可以全域修改 SQL Server 實體默認語言,一勞永逸:如何更改 SQL Server 的默認語言?
uj5u.com熱心網友回復:
對于datetime和smalldatetime資料型別的格式yyyy-MM-dd是不明確的(注意,這是在新的日期和時間資料型別)。如果您不是美國人,日期很可能會被解釋為yyyy-dd-MM,并且由于一年中沒有 31 個月,您會收到錯誤訊息。
對于 SQL Server,無論資料型別和語言設定如何,都明確的格式是yyyyMMdd和yyyy-MM-ddThh:mm:ss.nnnnnnn;理想情況下,如果您使用字串文字,請使用其中一種格式,因為您永遠不會出錯(除非您合法地擁有無效日期)。
否則,您可以CONVERT使用樣式代碼明確您的價值:
SELECT CONVERT(datetime, '2021-12-31', 126);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/383577.html
標籤:sql-server 日期 约会时间 日期格式
