Oracle Function:TO_CHAR
Description
The Oracle/PLSQL TO_CHAR function converts a number or date to a string.将数字转换为日期或字符串
Syntax
TO_CHAR( value [, format_mask] [, nls_language] )
Parameters or Arguments
Value |
A number or date that will be converted to a string. |
format_mask |
Optional. This is the format that will be used to convert value to a string. |
nls_language |
Optional. This is the nls language used to convert value to a string. |
Please refer to "Format Models" for information on datetime formats.
TO_CHAR (character) |
You can use this function in conjunction with any of the XML functions to generate a date in the database format rather than the XML Schema standard format.
|
|||||||
TO_CHAR (datetime) |
例子: SQL> CREATE TABLE date_tab( 2 ts_col TIMESTAMP, 3 tsltz_col TIMESTAMP WITH LOCAL TIME ZONE, 4 tstz_col TIMESTAMP WITH TIME ZONE 5 );
Table created.
SQL> ALTER SESSION SET TIME_ZONE='-8:00';
Session altered.
SQL> INSERT INTO date_tab VALUES( 2 timestamp '1999-12-01 10:00:00', 3 TIMESTAMP '1999-12-01 10:00:00', 4 TIMESTAMP '1999-12-01 10:00:00' 5 );
1 row created.
SQL> INSERT INTO date_tab VALUES( 2 TIMESTAMP '1999-12-02 20:00:00-8:00', 3 TIMESTAMP '1999-12-02 20:00:00-8:00', 4 TIMESTAMP '1999-12-02 20:00:00-8:00' 5 );
1 row created. SQL> SELECT * FROM date_tab;
TS_COL TSLTZ_COL TSTZ_COL ----------------------------------- ------------------------------ ---------------------------------------- 01-DEC-99 10.00.00.000000 AM 01-DEC-99 10.00.00.000000 AM 01-DEC-99 10.00.00.000000 AM -08:00 02-DEC-99 08.00.00.000000 PM 02-DEC-99 08.00.00.000000 PM 02-DEC-99 08.00.00.000000 PM -08:00
The example shows the results of applying TO_CHAR to different TIMESTAMP datatypes. The result for a TIMESTAMP WITH LOCAL TIME ZONE column is sensitive to session time zone, The results for the TIMESTAMP and TIMESTAMP WITH TIME ZONE columns are not sensitive to session time zone:
|
|||||||
TO_CHAR (number) |
|
Example
Numbers |
TO_CHAR(1210.73, '9999.9') TO_CHAR(-1210.73, '9999.9') TO_CHAR(1210.73, '9,999.99') TO_CHAR(1210.73, '$9,999.00') TO_CHAR(21, '000099') |
Dates |
TO_CHAR(sysdate, 'yyyy/mm/dd') TO_CHAR(sysdate, 'Month DD, YYYY') TO_CHAR(sysdate, 'FMMonth DD, YYYY') TO_CHAR(sysdate, 'MON DDth, YYYY') TO_CHAR(sysdate, 'FMMON DDth, YYYY') TO_CHAR(sysdate, 'FMMon ddth, YYYY')
"FM":This means that zeros and blanks are suppressed(压制). |
The following is a list of valid parameters when the TO_CHAR function is used to convert a date to a string.
Parameter |
Explanation |
YEAR |
Year, spelled out |
YYYY |
4-digit year |
YYY YY Y |
Last 3, 2, or 1 digit(s) of year. |
IYY IY I |
Last 3, 2, or 1 digit(s) of ISO year. |
IYYY |
4-digit year based on the ISO standard |
Q |
Quarter of year (1, 2, 3, 4; JAN-MAR = 1). |
MM |
Month (01-12; JAN = 01). |
MON |
Abbreviated name of month. |
MONTH |
Name of month, padded with blanks to length of 9 characters. |
RM |
Roman numeral month (I-XII; JAN = I). |
WW |
Week of year (1-53) where week 1 starts on the first day of the year and continues to the seventh day of the year. |
W |
Week of month (1-5) where week 1 starts on the first day of the month and ends on the seventh. |
IW |
Week of year (1-52 or 1-53) based on the ISO standard. |
D |
Day of week (1-7). |
DAY |
Name of day. |
DD |
Day of month (1-31). |
DDD |
Day of year (1-366). |
DY |
Abbreviated name of day. |
J |
Julian day; the number of days since January 1, 4712 BC. |
HH |
Hour of day (1-12). |
HH12 |
Hour of day (1-12). |
HH24 |
Hour of day (0-23). |
MI |
Minute (0-59). |
SS |
Second (0-59). |
SSSSS |
Seconds past midnight (0-86399). |
FF |
Fractional seconds. |
Frequently Asked Questions
Question: Why doesn't this sort the days of the week in order? |
Answer: In the above SQL, the fmDay format mask used in the TO_CHAR function will return the name of the Day and not the numeric value of the day. To sort the days of the week in order, you need to return the numeric value of the day by using the fmD format mask as follows: |
SELECT ename, hiredate, TO_CHAR((hiredate),'fmDay') "Day" |
SELECT ename, hiredate, TO_CHAR((hiredate),'fmD') "Day" |