ITPub博客

首页 > Linux操作系统 > Linux操作系统 > TO_DATE函数的小问题(二)

TO_DATE函数的小问题(二)

原创 Linux操作系统 作者:yangtingkun 时间:2011-05-16 23:50:06 0 删除 编辑

今天在看文档的时候突然想到这个问题,一般而言,我们输入的都是日期,有可能会省略时间,但是如果省略日期,而只输入时间部分,结果会如何。

TO_DATE函数的小问题:http://yangtingkun.itpub.net/post/468/82264

 

 

问题还是通过例子来说明:

SQL> create table t_date (d date);

Table created.

SQL> alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';

Session altered.

SQL> insert into t_date values ('2011-05-16 23:24:53');

1 row created.

SQL> insert into t_date values (to_date('23:24:53', 'hh24:mi:ss'));

1 row created.

SQL> insert into t_date values (to_date('24:53', 'mi:ss'));

1 row created.

SQL> select * from t_date;

D
-------------------
2011-05-16 23:24:53
2011-05-01 23:24:53
2011-05-01 00:24:53
2011-05-01 00:00:53

可以看到,无论输入时间信息的哪个部分,都遵循这样的规律:

输入日期不包括的时分秒信息都默认为0

输入日期不包括的日部分,默认为1日;

输入日期不包括的月份部分,默认为当前月;

输入日期不包括的年份部分,默认为当前年;

公元信息默认为公元后。

最后看一个例子来验证这个结论:

SQL> select to_date(1, 'd') from dual;

TO_DATE(1,'D')
-------------------
2011-05-01 00:00:00

SQL> select to_date(2, 'd') from dual;
select to_date(2, 'd') from dual
*
ERROR at line 1:
ORA-01835: day of week conflicts with Julian date

第一个查询中日期仅指定了星期日,年月日和时分秒信息都不包括,而结论显然和上面的一致。但是需要注意,今年当前月的1日,恰好就是星期天,而如果指定星期一,则会导致日期冲突的错误。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-695520/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-29

  • 博文量
    1955
  • 访问量
    10523300