Do you need to convert data in SQL Server? Looking for the format codes for the CONVERT function? Learn all about the SQL Server CONVERT function in this guide.
What Is the SQL Server CONVERT Function?
The CONVERT function in SQL Server converts a value from one data type to another.
You can specify the format to convert to, as well as the data type.
It’s a very useful function, especially for converting dates to strings.
Function Syntax
The syntax of the SQL CONVERT function is:
CONVERT (data_type [ (length) ] ,expression [ ,style ] )
The parameters that the CONVERT function takes are:
- expression: the expression (e.g. column, literal value, function call) to convert.
- data_type: the data type to convert the expression to.
- length: an optional integer that represents the length of the target value. By default, this value is 30.
- style: An integer value that represents how the function will translate the expression.
SQL Server Date Format Styles
The style parameter of the CONVERT function can take a number that represents a specific format. When converting a date value to a varchar value, then the output will be in the format mentioned here.
This table shows the numbers that are used for the style parameter. Many formats are similar but they either show the century of the year (in “yyyy” format) or don’t show the century (in “yy” format).
Without Century (yy) | With Century (yyyy) | Standard | Input/Output |
– | 0 or 100 | Default for DATETIME and SMALLDATETIME | mon dd yyyy hh:miAM (or PM) |
1 | 101 | U.S. | 1 = mm/dd/yy
101 = mm/dd/yyyy |
2 | 102 | ANSI | 2 = yy.mm.dd
102 = yyyy.mm.dd |
3 | 103 | British/French | 3 = dd/mm/yy
103 = dd/mm/yyyy |
4 | 104 | German | 4 = dd.mm.yy |
5 | 105 | Italian | 104 = dd.mm.yyyy |
6 | 106 | 6 = dd mon yy
106 = dd mon yyyy |
|
7 | 107 | 7 = Mon dd, yy
107 = Mon dd, yyyy |
|
8 or 24 | 108 | hh:mi:ss | |
– | 9 or 109 | Default + milliseconds | mon dd yyyy hh:mi:ss:mmmAM (or PM) |
10 | 110 | U.S. | 10 = mm-dd-yy
110 = mm-dd-yyyy |
11 | 111 | Japan | 11 = yy/mm/dd
111 = yyyy/mm/dd |
12 | 112 | ISO | 12 = yymmdd
112 = yyyymmdd |
– | 13 or 113 | Europe default + milliseconds | dd mon yyyy hh:mi:ss:mmm (24h) |
14 | 114 | hh:mi:ss:mmm (24h) | |
– | 20 or 120 | ODBC canonical | yyyy-mm-dd hh:mi:ss (24h) |
– | 21 or 25 or 121 | ODBC canonical (with milliseconds) | yyyy-mm-dd hh:mi:ss.mmm (24h) |
22 | U.S. | mm/dd/yy hh:mi:ss AM (or PM) | |
23 | ISO8601 | yyyy-mm-dd | |
126 | ISO8601 | yyyy-mm-ddThh:mi:ss.mmm | |
127 | ISO8601 with time zone Z | yyyy-mm-ddThh:mi:ss.mmmZ | |
130 | Hijri | dd mon yyyy hh:mi:ss:mmmAM | |
131 | Hijri | dd/mm/yyyy hh:mi:ss:mmmAM |
How does SQL Server handle two-digit years? For example, if you specify the year 80, does that represent 1980 or 2080?
SQL Server bases the dates on a cutoff year of 2049. This means:
- A two-digit year 49 is interpreted as 2049
- A two-digit year 50 is interpreted as 1950
This isn’t very flexible or clear (and a two-digit year was a cause of the Y2K panic, for those of us that remember!). So I recommend using four-digit years.
SQL Server Float and Real Styles
If you’re converting data from a float or real data type, you can use one of the following styles:
Value | Result |
0 (default) | Maximum of 6 digits |
1 | Always 8 digits |
2 | Always 16 digits |
3 | Always 17 digits. Every distinct float or real value is guaranteed to convert to a distinct character string. |
126, 128, 129 | Legacy values, which may be deprecated in the future |
SQL Server Money and Smallmoney Styles
If you’re converting from a money or smallmoney data type, you can use one of the following styles:
Value | Result | Example |
0 (default) | No commas every three digits to the left of the decimal. Two digits to the right of the decimal point | 12345.67 |
1 | Commas every three digits to the left of the decimal. Two digits to the right of the decimal point. | 12,345.67 |
2 | No commas every three digits to the left of the decimal. Four digits to the right of the decimal point. | 12345.6789 |
126 | The same as style 2 above when converting to CHAR or VARCHAR |
SQL CONVERT Examples
Here are some examples of using the different format styles with the SQL CONVERT function.
Date and Time
These examples are based on the current date and time of Thursday 9 Jan, 2019, 2:21 PM.
Format | SQL | Output |
0 | SELECT CONVERT(VARCHAR, GETDATE(), 0); |
Jan 9 2019 02:21PM |
1 | SELECT CONVERT(VARCHAR, GETDATE(), 1); |
01/09/19 |
101 | SELECT CONVERT(VARCHAR, GETDATE(), 101); |
01/09/2019 |
2 | SELECT CONVERT(VARCHAR, GETDATE(), 2); |
19.01.09 |
102 | SELECT CONVERT(VARCHAR, GETDATE(), 102 ; |
2019.01.09 |
3 | SELECT CONVERT(VARCHAR, GETDATE(), 3); |
09/01/19 |
103 | SELECT CONVERT(VARCHAR, GETDATE(), 103); |
09/01/2019 |
104 | SELECT CONVERT(VARCHAR, GETDATE(), 104); |
09.01.19 |
105 | SELECT CONVERT(VARCHAR, GETDATE(), 105); |
09.01.2019 |
106 | SELECT CONVERT(VARCHAR, GETDATE(), 106); |
09 Jan 2019 |
107 | SELECT CONVERT(VARCHAR, GETDATE(), 107); |
Jan 09, 2019 |
110 | SELECT CONVERT(VARCHAR, GETDATE(), 110); |
01-09-2019 |
112 | SELECT CONVERT(VARCHAR, GETDATE(), 112); |
20190109 |
113 | SELECT CONVERT(VARCHAR, GETDATE(), 113); |
09 Jan 2019 02:21:00:123 |
126 | SELECT CONVERT(VARCHAR, GETDATE(), 126); |
2019-01-09T02:21:00.123 |
Conclusion
Using the SQL CONVERT function in SQL Server can help you convert data from one datatype to another. A common use for this is converting a date to a different format, using a varchar target data type and one of the many in-built format styles.