 Oracle TO_CHAR Function is used to convert number type or date type into string type. Oracle DATE TO_CHAR query can convert a date type to character type. SQL TO_CHAR Function can be used with SQL SYSDATE also. PLSQL TO_CHAR Function syntax and examples are shown below.
Oracle TO_CHAR Function is used to convert number type or date type into string type. Oracle DATE TO_CHAR query can convert a date type to character type. SQL TO_CHAR Function can be used with SQL SYSDATE also. PLSQL TO_CHAR Function syntax and examples are shown below.
Oracle TO_CHAR Function Syntax
SELECT TO_CHAR(value/date, [FORMAT_MASK],[NLS_LANGUAGE]) FROM table_name;
In the above SQL TO_CHAR Syntax:
- FORMAT_MASK is an optional field, if present; it is used to convert value into string.
- NLS_LANGUAGE is also an optional field, if present; it is used to convert value into string.
Oracle TO_CHAR Function – Converting Number to String Example
Oracle TO_CHAR Function can convert Numbers to String.
Table below shows how SQL TO_CHAR Function converts numbers to string:
| Oracle TO_CHAR Query | Output | 
| SELECT TO_CHAR(12345.12345,'99999.999') "PLSQL TO_CHAR" FROM DUAL; | 12345.123 | 
| SELECT TO_CHAR(12345.12345,'99,999.999') "PLSQL TO_CHAR" FROM DUAL; | 12,345.123 | 
| SELECT TO_CHAR(12345.12345,'$99,999.999') "PLSQL TO_CHAR" FROM DUAL; | $12,345.123 | 
| SELECT TO_CHAR(12345.12345,'$0099,999.999') "PLSQL TO_CHAR" FROM DUAL; | $0012,345.123 | 
| SELECT TO_CHAR(12345.12345,'99999.9') "PLSQL TO_CHAR" FROM DUAL; | 12345.1 | 
Note: We have aliased every query result as PLSQL TO_CHAR.
Oracle TO_CHAR Function – Oracle DATE TO_CHAR Example
Oracle TO_CHAR Function can also be used with SQL SYSDATE.
Oracle DATE TO_CHAR queries can be written to convert date type to date type.
For example, table below shows Oracle DATE TO_CHAR conversion with SYSDATE as parameter.
| Parameter | Explanation | Oracle DATE TO_CHAR Query | Output | 
| YEAR | Year, spelled out in words | SELECT TO_CHAR(SYSDATE,'YEAR') FROM DUAL; | TWENTY TWELVE | 
| YYYY | Year in 4 digits | SELECT TO_CHAR(SYSDATE,'YYYY') FROM DUAL; | 2012 | 
| YYY | Year in 3 digits | SELECT TO_CHAR(SYSDATE,'YYY') FROM DUAL; | 012 | 
| YY | Year in 2 digits | SELECT TO_CHAR(SYSDATE,'YY') FROM DUAL; | 12 | 
| Y | Year in 1 digit | SELECT TO_CHAR(SYSDATE,'Y') FROM DUAL; | 2 | 
| IYYY | Year in 4 digits based on ISO standard | SELECT TO_CHAR(SYSDATE,'IYYY') FROM DUAL; | 2012 | 
| IYY | Last 3 digits of year based on ISO standard | SELECT TO_CHAR(SYSDATE,'IYY') FROM DUAL; | 012 | 
| IY | Last 2 digits of year based on ISO standard | SELECT TO_CHAR(SYSDATE,'IY') FROM DUAL; | 12 | 
| I | Last 2 digit of year based on ISO standard | SELECT TO_CHAR(SYSDATE,'I') FROM DUAL; | 2 | 
| Q | Quarter of Year TO_CHAR(1,2,3,4) January-March 1st quarter | SELECT TO_CHAR(SYSDATE,'Q') FROM DUAL; | 4 | 
| MM | Month TO_CHAR(01-12) January=01 | SELECT TO_CHAR(SYSDATE,'MM') FROM DUAL; | 11 | 
| MON | Short name for month e.g. NOV | SELECT TO_CHAR(SYSDATE,'MON') FROM DUAL; | NOV | 
| MONTH | Full name of month e.g. JUNE | SELECT TO_CHAR(SYSDATE,'MONTH') FROM DUAL; | NOVEMBER | 
| RM | Roman Numeral for month Jan = I, Dec = XII | SELECT TO_CHAR(SYSDATE,'RM') FROM DUAL; | XI | 
| WW | Week of Year, 01 Jan – 07 Jan 1st week | SELECT TO_CHAR(SYSDATE,'WW') FROM DUAL; | 44 | 
| W | Week of month (1-5) starts at 1st – 7th of month is first week | SELECT TO_CHAR(SYSDATE,'W') FROM DUAL; | 1 | 
| IW | Week of Year (1-52) or(1-53) based on ISO standard | SELECT TO_CHAR(SYSDATE,'IW') FROM DUAL; | 44 | 
| D | Day of Week (1-7) | SELECT TO_CHAR(SYSDATE,'D') FROM DUAL; | 5 | 
| DD | Day of Month(1-31) | SELECT TO_CHAR(SYSDATE,'DD') FROM DUAL; | 01 | 
| DDD | Day of Year (1-366) | SELECT TO_CHAR(SYSDATE,'DDD') FROM DUAL; | 306 | 
| DAY | Name of Day e.g. MONDAY | SELECT TO_CHAR(SYSDATE,'DAY') FROM DUAL; | THURSDAY | 
| DY | Short name of Day e.g. MON | SELECT TO_CHAR(SYSDATE,'DY') FROM DUAL; | THU | 
| J | Julian day; the number of days since January 1, 4712 BC. | SELECT TO_CHAR(SYSDATE,'J') FROM DUAL; | 2456233 | 
| HH | Hour of Day (1-12) | SELECT TO_CHAR(SYSDATE,'HH') FROM DUAL; | 05 | 
| HH12 | Hour of Day (1-12) | SELECT TO_CHAR(SYSDATE,'HH12') FROM DUAL; | 05 | 
| HH24 | Hour of Day (0-23) | SELECT TO_CHAR(SYSDATE,'HH24') FROM DUAL; | 17 | 
| MI | Minute (0-59) | SELECT TO_CHAR(SYSDATE,'MI') FROM DUAL; | 59 | 
| SS | Seconds (0-59) | SELECT TO_CHAR(SYSDATE,'SS') FROM DUAL; | 41 | 
| SSSS | Seconds past midnight (0-86399) | SELECT TO_CHAR(SYSDATE,'SSSS') FROM DUAL; | 0000 |