Interpretation of date strings into datetime
and datetime2
can be different too, when using non-US DATEFORMAT
settings. E.g.
set dateformat dmy
declare @d datetime, @d2 datetime2
select @d = '2013-06-05', @d2 = '2013-06-05'
select @d, @d2
This returns 2013-05-06
(i.e. May 6) for datetime
, and 2013-06-05
(i.e. June 5) for datetime2
. However, with dateformat
set to mdy
, both @d
and @d2
return 2013-06-05
.
The datetime
behavior seems at odds with the MSDN documentation of SET DATEFORMAT
which states: Some character strings formats, for example ISO 8601, are interpreted independently of the DATEFORMAT setting. Obviously not true!
Until I was bitten by this, I'd always thought that yyyy-mm-dd
dates would just be handled right, regardless of the language / locale settings.