[每日一题] OCP1z0-047 :2013-07-18时间格式
[每日一题] OCP1z0-047 :2013-07-18时间格式

这道题目是考时间格式,日期的存贮格式,在ORACLE内部都由如下七部分构成:世纪、年、月、日、小时、分钟、秒。
OK,我们来做个测试:
gyj@OCM> create table gyj_order(order_id int,order_date date);
Table created.
gyj@OCM> insert into gyj_order values(1,sysdate);
1 row created.
gyj@OCM> commit;
Commit complete.
gyj@OCM> select * from gyj_order where order_date> to_date('JUL 10 2006','MON DDYYYY');
ORDER_IDORDER_DAT
---------- ---------
116-JUL-13
说明答案A正确
gyj@OCM> select * from gyj_order whereto_char(order_date,'MON DD YYYY')='JUL 16 2013';
ORDER_IDORDER_DAT
---------- ---------
116-JUL-13
说明答案B正确
gyj@OCM> select to_char(add_months(sysdate,6),'MONDD YYYY') from dual;
TO_CHAR(ADD_MO
--------------
JAN 16 2014
gyj@OCM> select * from gyj_order whereorder_date> to_char(add_months(sysdate,6),'MON DD YYYY');
select * from gyj_order where order_date>to_char(add_months(sysdate,6),'MON DD YYYY')
*
ERROR at line 1:
ORA-01858: a non-numeric character was found where anumeric was expected
说明答案C不正确,时间类型与字符类型不能做比较
gyj@OCM> select * from gyj_order where order_datein(to_date('JUL 16 2013','MON DD YYYY'),to_char('JUL 16 2013','MON DD YYYY'));
select * from gyj_order where order_datein(to_date('JUL 16 2013','MON DD YYYY'),to_char('JUL 16 2013','MON DD YYYY'))
*
ERROR at line 1:
ORA-01722: invalid number
gyj@OCM> select to_char('JUL 16 2013','MON DDYYYY') from dual; select to_char('JUL 16 2013','MON DD YYYY') from dual
*
ERROR at line 1:
ORA-01722: invalid number
上面的写法是错的,已是字符就无须用to_char转化,看下面的写法才是正确的:
gyj@OCM> select to_char(to_date('JUL 16 2013','MONDD YYYY'),'MON DD YYYY') from dual;
TO_CHAR(TO_
-----------
JUL 16 2013
还有时间与字符类型不能直接计算,如下报错:
gyj@OCM> select * from gyj_order where order_datein(to_char(to_date('JUL 16 2013','MON DD YYYY'),'MON DD YYYY'));
select * from gyj_order where order_datein(to_char(to_date('JUL 16 2013','MON DD YYYY'),'MON DD YYYY'))
*
ERROR at line 1:
ORA-01858: a non-numeric character was found where anumeric was expected
答案D不正确
最终正确答案选:AB
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。