看來這個問題被問了很多,但沒有一個答案給了我結果。我在這裏拉我的頭髮...所以希望有人有答案。SQL日期格式日期和月份混合
我有一臺運行SQL Server 2005的生產服務器。我備份了數據庫,並將其恢復到筆記本電腦的SQL Server Express實例中。現在日期查詢受到嚴重影響。在刺激中。服務器全部存儲爲「4/13/2011 12:00:00 AM」格式,但在我的筆記本電腦上顯示爲「2011-04-14 00:00:00.000」。當我在「2011年4月14日」嘗試查找條目時發生查詢時,筆記本電腦給我提供了錯誤「將varchar數據類型轉換爲日期時間數據類型導致超出範圍值」。 編輯:這個確切的查詢在生產SQL服務器上運行良好。 (我使用SSMS運行查詢...不是應用程序/代碼)
我確定我的筆記本電腦的Windows區域設置與服務器(英語(美國))相同,並且區域和語言控制面板完全相同。
最後我跑了以下兩個查詢:
select name ,alias, dateformat
from syslanguages
where langid =
(select value from master..sysconfigures
where comment = 'default language')
select @@language
分別 「英國」 放棄 「*美國英語,英語,MDY *」 ......和的結果。這位英國人來自哪裏?!現在,當我在查詢之前(在管理工作室中)運行此命令時(在管理工作室中)
SET DATEFORMAT mdy
然後,一切正常!但在syslanguages查詢中,它似乎已經是mdy格式。我不打算在整個地方用「SET DATEFORMAT」重寫我的應用程序 - 所以希望有人有線索。也許我的SQL Express安裝有誤,我必須重新安裝它?
我會繼續修補,希望能夠讓這個工作。
不知道這是否是一個答案,但另一件事來檢查將是數據庫的區域設置,而不是服務器及其上做到這一點。可能已決定使用不同的「英文」來存儲數據。 – James 2011-04-13 21:59:02
「當我做一個查詢試圖找到關於」你用什麼來做的? SSMS? – 2011-04-13 22:15:29
你將如何檢查SQL服務器數據庫的區域設置?我可以更改排序規則,但我確定這不相關。 是的 - 我使用SSMS(快速版)來運行這些查詢。 – MikeMurko 2011-04-14 00:45:47