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
The return value of ISDATE depends on the settings set by SET DATEFORMAT, SET LANGUAGE and default language option.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With