为什么 SQL Server (2005) 会误解这个 ISO 8601 格式日期?(YYYY-MM-DD)
DECLARE @FromDate DATETIME
SET @FromDate = '2013-01-05'
PRINT @FromDate
-- Prints: May 1 2013 12:00AM
文本格式的日期显然是 1 月 5 日,但由于某种原因 SQL Server 将其解释为 5 月 1 日。世界上没有 YYYY-DD-MM 的日期格式,为什么会发生这种情况?我多年来一直使用这种格式并且以前从未遇到过问题,所以我不确定在这种情况下有什么不同。
即使我使用 CONVERT 强制它进入 ISO8601,它仍然会出错:
DECLARE @FromDate DATETIME
SET @FromDate = CONVERT(VARCHAR, '2013-01-05', 126)
PRINT @FromDate
-- Still prints: May 1 2013 12:00AM
编辑:哎呀-我在上面使用'CONVERT(VARCHAR,我真正的意思是CONVERT(DATETIME),所以这就是为什么它没有任何效果。谢谢@RBarryYoung
但是,如果我在不同的服务器(SQL 2012)上运行上述两个示例中的任何一个,它们都会正确打印“Jan 5 2013 12:00AM”
这里发生了什么事?我认为在 SQL Server 中使用 ISO 格式的主要原因之一是它使月份和日期变得明确?