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(DATETIME)を意味するところに「CONVERT(VARCHAR」を使用しているため、効果がありませんでした。ありがとう@RBarryYoung
ただし、上記の 2 つの例のいずれかを別のサーバー (SQL 2012) で実行すると、どちらも「2013 年 1 月 5 日 12:00AM」と正しく出力されます。
ここで何が起こっているのですか?SQL Server で ISO 形式を使用する主な理由の 1 つは、月と日が明確になるためだと思いました。