如果将其括在双引号中,则可以在格式掩码中添加任意文字。
SQL> ed
Wrote file afiedt.buf
1 SELECT TO_CHAR(TO_DATE('December 25th, 2004', 'MONTH DD"th", YYYY'),
2 'DD-MM-YY')
3* FROM dual
SQL> /
TO_CHAR(
--------
25-12-04
当然,这仅在字符串始终包含文字字符串 th 时才有效。如果您有其他带有其他后缀的字符串(即December 1st, 2004),则会出现错误
SQL> ed
Wrote file afiedt.buf
1 SELECT TO_CHAR(TO_DATE('December 1st, 2004', 'MONTH DD"th", YYYY'),
2 'DD-MM-YY')
3* FROM dual
SQL> /
SELECT TO_CHAR(TO_DATE('December 1st, 2004', 'MONTH DD"th", YYYY'),
*
ERROR at line 1:
ORA-01861: literal does not match format string
如果您想同时处理这两种情况,您可能需要先解析原始字符串以删除后缀,然后再将字符串转换为日期,然后再转换回不同的字符串
SQL> ed
Wrote file afiedt.buf
1 WITH x AS (
2 SELECT 'December 1st, 2004' str FROM dual UNION ALL
3 SELECT 'December 25th, 2004' FROM dual
4 )
5 SELECT TO_CHAR(
6 TO_DATE( SUBSTR( str, 1, INSTR( str, ',' ) - 3 ) ||
7 SUBSTR( str, INSTR( str, ',' ) ),
8 'MONTH DD, YYYY' ),
9 'DD-MM-YY' )
10* FROM x
SQL> /
TO_CHAR(
--------
01-12-04
25-12-04