While doing surprise code review of Jr. DBA I found interesting syntax DATEFORMAT. This keywords is very less used as CONVERT and CAST can do much more than this command. It is still interesting to learn about learn about this new syntax.
Sets the order of the dateparts (month/day/year) for entering datetime or smalldatetime data. This command allows you to input strings that would normally not be recognized by SQL server as dates. The SET DATEFORMAT command lets you specify order of data parts. The options for DATEFORMAT are mdy, dmy, ymd, ydm, myd, or dym. The default DATEFORMAT is mdy. This commands allows to INSERT/UPDATE dates with different formats without doing any special data conversions.The setting of SET DATEFORMAT is set at execute or run time and not at parse time. Following example demonstrate how character string can be converted to proper dateformat using SET DATEFORMAT command.
Example:
CREATE TABLE #tempTable (DateFormatSample SMALLDATETIME) SET DATEFORMAT MDY INSERT INTO #tempTable VALUES ('09/28/2007') SET DATEFORMAT YDM INSERT INTO #tempTable VALUES ('2007/28/09') SET DATEFORMAT YMD INSERT INTO #tempTable VALUES ('2007/08/28') SELECT DateFormatSample FROM #tempTable DROP TABLE #tempTable
Resultset:
DateFormatSample
———————–
2007-09-28 00:00:00
2007-09-28 00:00:00
2007-08-28 00:00:00
Reference : Pinal Dave (https://blog.sqlauthority.com)