2011-12-01 54 views
3

我有兩臺服務器有兩種不同的登錄日期格式(English & British English)。CAST nvarchar與日期時間無關,而與登錄日期格式無關?

我需要能夠CAST一個nvarchar值datetime無論日期格式。

我有以下查詢:

select cast('2011-13-07' as datetime) 

這個工程1臺服務器上,而不是其他。

是否有另一種方法可以將13/7/2011表示爲datetime兩個服務器的對象?

爲保持一致性,兩個服務器上的查詢需要相同。

回答

5

使用ISO-8601標準格式YYYYMMDD

SELECT CAST('20110713' as DATETIME) 

不要使用任何破折號!無論語言,地區,語言環境設置如何,該格式都可以在任何SQL Server實例上工作- 它只是起作用

ISO-8601中的其他格式是YYYY-MM-DDTHH:MM:SS - 這個格式包含破折號,但也包含時間部分。

+0

我得到錯誤'varchar數據類型轉換爲日期時間數據類型導致超出範圍的值。' – Curt

+0

哦,你是否改變它?它在我現在複製查詢時起作用! – Curt

+0

@Curt:是的 - 對不起 - 我有一天和一個月混在一起。你需要年,月,日('20110713') –