簡體   English   中英

SQL Server日期轉換問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM