You are viewing an older version of this section. View current production version.
TO_CHAR
Converts a DATE, DATETIME, DATETIME(6), TIME, TIMESTAMP or TIMESTAMP(6) value to a string.
Syntax
TO_CHAR ( convert_from_value, result_format )
Arguments
-
convert_from_value: Value of one of the following data types:
DATE,DATETIME,DATETIME(6),TIME,TIMESTAMPorTIMESTAMP(6). -
result_format: A format string, comprised of one or more of the format specifiers listed in the table below:
Format Specifiers
| Meaning | Format Specifier |
|---|---|
| Four digit year | YYYY |
| Two digit year | YY |
| Two digit year (20th century for 00-49) | RR |
| Three letter month (Jan - Dec) | MON |
| Month (January - December) | MONTH |
| Month as a digit (1 - 12) | MM |
| Day of the week as a digit (1 - 7) | D |
| Three letter day (Sun - Sat) | DY |
| Day (1 - 31) | DD |
| Hour (0 - 23) | HH24 |
| Hour (1 - 12) | HH or HH12 |
| Minute (0 - 59) | MI |
| Second (0 - 59) | SS |
| Precision for seconds | FFn, where 1 <= n <= 9 and n is the number of decimals of precision. If n is excluded, indicates two decimals of precision. |
| AM or PM | AM, PM, A.M., P.M. |
TO_CHAR's format string may contain characters that are not format specifiers. These characters appear as literals in the resulting string.
Examples
The following examples use the :> operator to cast a string to a DATE, TIMESTAMP, or similiar type. TO_CHAR then converts the casted type to a string.
Call to TO_CHAR |
Result |
|---|---|
SELECT TO_CHAR('2018-03-01' :> DATE, 'MM/DD'); |
03/01 |
SELECT TO_CHAR('2018-03-01' :> DATE, 'The year is YYYY'); |
The year is 2018 |
SELECT TO_CHAR('2018-03-01 05:10:38' :> DATE, 'MM/DD/YYYY'); |
03/01/2018 |
SELECT TO_CHAR('2018-03-01 05:10:38' :> DATE, 'DY MONTH DD, YYYY'); |
Thu Mar 01, 2018 |
SELECT TO_CHAR('2018-03-01 05:10:38' :> DATETIME, 'MM/DD/YYYY'); |
03/01/2018 |
SELECT TO_CHAR('2018-03-01 05:10:38.123456' :> DATETIME(6), 'MM/DD/YYYY HH:MI:SS:FF4'); |
03/01/2018 05:10:38:1234 |
SELECT TO_CHAR('05:10:38' :> TIME, 'The time is HH:MM:SS'); |
The time is 05:10:38 |
SELECT TO_CHAR('18-03-01' :> TIMESTAMP, 'MM/DD/YYYY'); |
03/01/2018 |
SELECT TO_CHAR('18-03-01 05:10:38.123456' :> TIMESTAMP(6), 'MM/DD/YYYY HH:MI:SS:FF4'); |
03/01/2018 05:10:38.1234 |
SELECT TO_CHAR('2018-04-01 08:00:00.123456' :> DATETIME(6), 'PM'); |
AM |
When you call TO_CHAR and don’t explicitly type-cast the first argument, TO_CHAR will implicitly type-cast the first argument to TIMESTAMP(6).
When you call TO_CHAR and specify a temporal-type column in the first argument, no typecast is needed.