Sql-Server
我可以更改系統範圍內日期順序的 MSSQL 解釋嗎?
我使用來自https://laravel.com/的 Laravel 和 PHP
MSSQL 是一個驅動程序,可以完美執行——日期除外。
出於某種原因,該項目已決定以下是通用日期格式
Ymd H:i:s 2021-01-21 12:00:00
然而,這似乎並不普遍,因為 MSSQL 將其解釋為基於美國的日期,例如。上述日期無效,因為 21 被視為月份而不是日期。
我會嘗試讓他們允許將日期設置為自定義格式,但這可能需要一段時間。
我的 MSSQL 使用者設置為 Language:British English 這解決了我的大部分問題,但不是全部。
是否有可能以某種方式告訴 MSSQL 解釋這樣的日期
2021-01-22 12:00:00
作為
YYYY-MM-DD HH:II:SS
代替
YYYY-DD-MM HH:II:SS
它在做什麼?
這可以在系統範圍內完成嗎?
這是由於使用者設置為“英式英語”所致。我一直認為這是一個錯誤(我想有人被告知英國日期的月份和日期與美國標準相反,他們錯誤地認為這也適用於類似 ISO8601 的日期)。至少從 SQL7 IIRC 開始就是這種情況。這很煩人,因為在所有其他情況下,YYYY-MM-DD 都是明確的。
如果顯式將字元串轉換為日期
CONVERT()
,則可以使用可選的第三個參數指定正在使用的字元串格式。如果問題是在 SQL 字元串中發送日期類型參數(而不是使用類型參數準備好的查詢),這可能無濟於事,因為在這種情況下,轉換是無法控制的。如果您只提供年份優先格式的日期,那麼請避免使用英式英語使用者設置。如果您的申請有時在非美國最後日期通過,這可能無濟於事。