[英]SQL Server Date Casting Issue
在我安裝SQL Server時,如果我執行以下操作
SELECT CAST('2008-05-03 00:00:00' AS DATETIME), CAST('2008-05-03T00:00:00' AS DATETIME)
然后我得到以下結果
2008-03-05 00:00:00.000 2008-05-03 00:00:00.000
現在這本身很奇怪,因為我不確定為什么它將第一個日期解析為yyyy / dd / mm(我的登錄設置為英國英語順便說一句),並且該日期格式不是標准的AFAIK。
我不知道從哪里開始嘗試解決這個奇怪的解析問題,這似乎不會發生在任何同事系統中。
您的第一種格式確實是一種依賴於語言的格式(ODBC規范),並且由於您的系統被定義為“英國英語”,它將被解釋為YYYY-DD-MM
(如果它是“美國英語”,它將被解釋作為YYYY-MM-DD
)。
但是,第二個是ISO-8601標准日期格式 ( Wikipedia ),它適用於任何SQL Server安裝,無論您的語言或區域設置如何。 它的格式總是 YYYY-MM-DDTHH:MM:SS
並且將被解釋為這樣。
試試這個:
SET LANGUAGE british
SELECT
CAST('2008-05-03 00:00:00' AS DATETIME) 'UK Date',
CAST('2008-05-03T00:00:00' AS DATETIME) 'UK ISO Date'
SET LANGUAGE us_english
SELECT
CAST('2008-05-03 00:00:00' AS DATETIME) 'US Date',
CAST('2008-05-03T00:00:00' AS DATETIME) 'US ISO Date'
我的輸出是:
UK Date UK ISO Date
2008-03-05 00:00:00.000 2008-05-03 00:00:00.000
US Date US ISO Date
2008-05-03 00:00:00.000 2008-05-03 00:00:00.000
你能用轉換嗎? 這將允許您指定我不確定您可以使用強制轉換執行的日期格式:
SELECT CONVERT(DATETIME, '2008-05-03 00:00:00', 120), CONVERT(DATETIME, '2008-05-03T00:00:00', 126)
您可以在這里查看各種格式: http : //msdn.microsoft.com/en-us/library/ms187928.aspx
它正在您的會話中使用整理配置。 您可以避免歧義設置日期格式 :
SET dateformat dmy
SELECT CAST('2008-05-03 00:00:00' AS DATETIME), CAST('2008-05-03T00:00:00' AS DATETIME)
-- 2008-03-05 00:00:00.000 2008-05-03 00:00:00.000
SET dateformat mdy
SELECT CAST('2008-05-03 00:00:00' AS DATETIME), CAST('2008-05-03T00:00:00' AS DATETIME)
-- 2008-05-03 00:00:00.000 2008-05-03 00:00:00.000
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.