http://www.blogjava.net/zJun/archive/2006/08/14/61808.html
string1
要转换的字符串.format_mask 可选项,日期转换格式.
nls_language 可选项. 指定用于转换字符串的nls language.
其中 format_mask主要有以下几种格式:Format Code | Explanation |
---|---|
YEAR | Year, spelled out |
YYYY | 4-digit year |
MM | Month (01-12; JAN = 01). |
MON | Abbreviated name of month. |
MONTH | Name of month, padded with blanks to length of 9 characters. |
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. |
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). |
[问题]
ORA-01810: format code appears twice
可能是像Java那样指定日期格式,比如:
to_char('2006-06-01 18:00:00' 'yyyy-mm-dd hh:MM:ss')
而在Oracle中的日期格式是不区分大小写的,所以 mm 出现了两次。
正确的写法是:
to_char('2006-06-01 18:00:00' 'yyyy-mm-dd hh:mi:ss')
ORA-01722: invalid number
可能是指定小时为hh,而hh取值范围是 1-12,所以如果指定小时为 0 点将出现这个异常,比如:
to_char('2006-06-01 00:00:00' 'yyyy-mm-dd hh:MM:ss')
正确的写法是:
to_char('2006-06-01 00:00:00' 'yyyy-mm-dd hh24:MM:ss')
==============
YY表示两位年数
日期输出带AM/PM,
--输入当前的系统日期,格式为 yyyy-mon-dd HH24:MI:SS AM(PM)
--增加AM PM --在这个格式中AM PM没有区别 ,表达的含义是一致的
select to_char(sysdate,'yyyy-mon-dd HH24:MI:SS AM') from dual
select to_char(sysdate,'yyyy-mon-dd HH24:MI:SS PM') from dual
select to_char(sysdate,'yyyy-mon-dd HH24:MI:SS PM') from dual
===
毫秒表示:
select to_timestamp('16-NOV-11 06.09.57.924000000 PM','DD-MON-YY hh12.mi.ss.ffAM' ) from dual
select to_char(systimestamp, 'DD-MON-YY hh12.mi.ssxff') from dual
select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ssxff') time1,
to_char(current_timestamp) time2 from dual
必须用timestamp