Sql-Server

我可以更改系統範圍內日期順序的 MSSQL 解釋嗎?

  • January 24, 2021

我使用來自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 字元串中發送日期類型參數(而不是使用類型參數準備好的查詢),這可能無濟於事,因為在這種情況下,轉換是無法控制的。

如果您只提供年份優先格式的日期,那麼請避免使用英式英語使用者設置。如果您的申請有時在非美國最後日期通過,這可能無濟於事。

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