如果我們設置日期格式,以MDY然後它會驗證對於此格式的所有日期均爲真。
如果發現無效的日期格式爲mdy,則根據語言檢查設置。如果根據語言支持發現有效日期,則返回true否則返回false。
如果用戶A的默認語言爲us_english,則2006年4月6日的日期將被解釋爲2006年4月6日。如果用戶B具有默認語言'British',則會解釋日期作爲2006年6月4日。
/* Use these sessions settings. */
SET LANGUAGE us_english;
SET DATEFORMAT mdy;
/* Expression in mdy dateformat */
SELECT ISDATE('04/15/2008'); --Returns 1.
/* Expression in mdy dateformat */
SELECT ISDATE('04-15-2008'); --Returns 1.
/* Expression in mdy dateformat */
SELECT ISDATE('04.15.2008'); --Returns 1.
/* Expression in myd dateformat */
SELECT ISDATE('04/2008/15'); --Returns 1.
SET DATEFORMAT mdy;
SELECT ISDATE('15/04/2008'); --Returns 0.
SET DATEFORMAT mdy;
SELECT ISDATE('15/2008/04'); --Returns 0.
SET DATEFORMAT mdy;
SELECT ISDATE('2008/15/04'); --Returns 0.
SET DATEFORMAT mdy;
SELECT ISDATE('2008/04/15'); --Returns 1.
SET DATEFORMAT dmy;
SELECT ISDATE('15/04/2008'); --Returns 1.
SET DATEFORMAT dym;
SELECT ISDATE('15/2008/04'); --Returns 1.
SET DATEFORMAT ydm;
SELECT ISDATE('2008/15/04'); --Returns 1.
SET DATEFORMAT ymd;
SELECT ISDATE('2008/04/15'); --Returns 1.
SET LANGUAGE English;
SELECT ISDATE('15/04/2008'); --Returns 0.
SET LANGUAGE Hungarian;
SELECT ISDATE('15/2008/04'); --Returns 0.
SET LANGUAGE Swedish;
SELECT ISDATE('2008/15/04'); --Returns 0.
SET LANGUAGE Italian;
SELECT ISDATE('2008/04/15'); --Returns 1.
/* Return to these sessions settings. */
SET LANGUAGE us_english;
SET DATEFORMAT mdy;
數字格式可以使用破折號( - ),點(。)或斜線(/)作爲分隔符。 SQL Server如何分析字符串的規則不會因分隔符而改變。一個常見的誤解是,ANSI SQL格式(有時候有時被錯誤地稱爲「ISO格式」),1998-02-23,對於smalldatetime和datetime是語言中立的。事實並非如此。它是一種數字格式,因此它是取決於SET DATEFORMAT和SET LANGUAGE設置:
SET LANGUAGE us_english
SELECT CAST('2003-02-28' AS datetime)
-----------------------
2003-02-28 00:00:00.000
SET LANGUAGE british
SELECT CAST('2003-02-28' AS datetime)
Server: Msg 242, Level 16, State 3, Line 4
The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.
請仔細閱讀錯誤消息。它確切地說明了問題所在。您將日期時間值指定爲字符串,並且由於字符串不是根據您使用的格式和DATEFORMAT設置形成的,因此SQL Server無法將字符串轉換爲日期時間值。
它爲我返回'0'。 – 2012-04-26 10:46:47
juergen d:默認語言是什麼? – 2012-04-26 10:48:17
它可能*試圖展示一種始終有效的格式,無論使用何種語言/日期格式設置。當然,在這方面,這是錯誤的(嘗試在查詢之前設置英語語言) – 2012-04-26 10:49:42