So I was looking at the documentation for the ISDATE() function in SQL Server and saw this in the examples:
SET DATEFORMAT mdy;
SELECT ISDATE('15/04/2008'); --Returns 0.
SET DATEFORMAT mdy;
SELECT ISDATE('15/2008/04'); --Returns 0.
SET DATEFORMAT mdy;
SELECT ISDATE('2008/15/04'); --Returns 0.
SET DATEFORMAT mdy;
SELECT ISDATE('2008/04/15'); --Returns 1.
The last example returns 1 (a valid date) but the date format above doesn’t match the format in the expression of the function. I thought it was a mistake in the documentation but then curiously tried it out myself and it does actually return 1.
So why is ‘2008/04/15’ a valid date when the date format is mdy?
Documentation here: http://msdn.microsoft.com/en-us/library/ms187347(SQL.105).aspx
from http://msdn.microsoft.com/en-us/library/ms187347%28SQL.105%29.aspx#SessionSettingDependencies
So if the given string not applies to the set dateformat it also cecks the default language option which allows dates in a format like y/m/d