今天使用 to_date 获取年份,出现问题:

case:

select to_char(to_date( ' 2012-12-04 ' , 'yyyy' ), 'yyyy' ) from dual;

result :

错误产生原因 :date 类型不能包含秒以后的精度。

修改后语句如下:

select to_char(to_date( '2012-12-04' , 'yyyy' ), 'yyyy-MM-dd' ) from dual;

结果: 可以正确执行

针对以上问题,在网上找到了不少资料,并整理了一下:

-- 查询日期语言种类

select * from V$NLS_PARAMETERS;

select * from nls_session_parameters

--TO_DATE(null) 的用法(插入 null 字段 ??

select 1 , TO_DATE( null ) from dual;

-- 实际时间 2012-12-04 18:22 测试结果如下:

--24 小时显示方式 --- 需用 HH24:mi:ss 这个形式

select to_char( sysdate , 'yyyy-MM-dd HH24:mi:ss' ) from dual; --mi 是分钟 2012-12-04 18:22:06

select to_char( sysdate , 'yyyy-MM-dd HH24:mm:ss' ) from dual; --mm 会显示月份 2012-12-04 18:12:15

--12 小时制显示方式

select to_char( sysdate , 'yyyy-MM-dd HH:mi:ss' ) from dual; --mi 是分钟 2012-12-04 06:22:58

select to_char( sysdate , 'yyyy-MM-dd HH:mm:ss' ) from dual; --mm 会显示月份 2012-12-04 06:12:21

--2012-12-04

select to_char(to_date( '2012-12-04' , 'yyyy-MM-dd' ), 'day' ) from dual;

--2012-12-04 tuesday (以 American 语言显示)

select to_char(to_date( '2012-12-04' , 'yyyy-mm-dd' ), 'day' , 'NLS_DATE_LANGUAGE = American' ) from dual;

--2012-12-04

select to_char(to_date( '2012-12-04' , 'yyyy-MM-dd' ), 'MONTH' ) from dual;

--2012-12-04 DECEMBER (以 American 语言显示)

select to_char(to_date( '2012-12-04' , 'yyyy-mm-dd' ), 'MONTH' , 'NLS_DATE_LANGUAGE = American' ) from dual;

下面是在网上找的 to_date 的格式:

TO_DATE 格式 ( 以时间 :2007-11-02 13:45:25 为例 )

Year:

yy two digits 显示值 :07

yyy three digits 显示值 :007

yyyy four digits 显示值 :2007

Month:

number 显示值 :11

abbreviated 字符集表示 显示值 :11 , 若是英文版 , 显示 nov

month spelled out 字符集表示 显示值 :11 , 若是英文版 , 显示 november

number 当月第几天 显示值 :02

number 当年第几天 显示值 :02

abbreviated 当周第几天简写 显示值 : 星期五 , 若是英文版 , 显示 fri

spelled out 当周第几天全写 显示值 : 星期五 , 若是英文版 , 显示 friday

ddspth spelled out, ordinal twelfth

Hour:

two digits 12 小时进制 显示值 :01

hh24 two digits 24 小时进制 显示值 :13

Minute:

two digits 60 进制 显示值 :45

Second:

two digits 60 进制 显示值 :25

digit 显示值 :4

digit 当年第几周 显示值 :44

digit 当月第几周 显示值 :1

24 小时格式下时间范围为: 0:00:00 - 23:59:59....

12 小时格式下时间范围为: 1:00:00 - 12:59:59 ....

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑