SQL Server date format function

In SQL Server, a DATETIME datatype is stored as 2 4-byte integers so as such doesn’t have a particular formatting like this.

If you want to return the date in a specific format, you need to CONVERT it to VARCHAR with the appropriate format identifier specified.

If you have a datetime in a VARCHAR and want to store that in a DATETIME field in SQL Server, then you should make sure you pass that value to SQL in a format that will always be safely interpreted. e.g. dd/mm/YYYY format is not safe as depending on settings, it could be treated as mm/dd/yyyy when it goes in. Safe formats are:

yyyyMMdd
yyyy-MM-ddThh:mi:ss.mmm

e.g.

INSERT MyTable (DateField) VALUES ('01/10/2010') -- dd/MM/yyyy not safe
INSERT MyTable (DateField) VALUES ('20101001') -- yyyyMMdd safe

Update:
When you SELECT a DATETIME field (GETDATE(), field, variable….) what you see in SSMS is a formatted value as this is what is useful to you, instead of it showing it’s actual internal 8byte representation.

Leave a Comment