Oralce中的to_date()函数用于将字符串转换为日期对象,具体使用格式为:
to_date( string, [ format_mask ] , [ nls_language ] )
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')