2012-06-21 50 views
0

問題就在這裏:ISDATE和新西蘭返回false

select ISDATE('2012-06-21 4:11 P.M.') 

文化是EN-NZ(新西蘭)和字符串日期上面是他們如何格式化的日期。

如何在這種情況下使ISDATE爲真?

+0

'DD/MM/yyyy',不'YYYY/MM/dd':http://msdn.microsoft.com/en-us/library/hc4ky857(v=vs.85) .aspx –

+0

爲什麼'PM'中有點?你能解釋這個字符串格式是如何生成的嗎?有人在某處輸入了它嗎? –

+0

@AaronBertrand - 我的c#控制檯線程文化設置爲en-NZ,並且當我從數據庫中提取日期字段時,這是當檢查DataTable時日期時間值的樣子。 – Rod

回答

0

理想情況下,你將控制字符串格式比這更好的。你不應該關心文化是EN-NZ或其他任何東西,如果你在一個標準格式傳遞,如:

SELECT ISDATE('20120621 16:11'); -- will never fail regardless of locale/language/DMY 

如果你需要讓人們在任何他們希望的格式輸入日期,那麼你必須以各種方式處理它。例如:

SELECT ISDATE(CONVERT(DATETIME, REPLACE('2012-06-21 4:11 P.M.', '.', ''), 120));