本帖最后由 guoyJoe 于 2013-7-18 00:02 编辑
111111111.png (18.97 KB, 下载次数: 30)
下载附件
2013-7-17 22:29 上传
2222222222.png (401.06 KB, 下载次数: 33)
下载附件
2013-7-17 22:29 上传
这道题目是考时间格式,日期的存贮格式,在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 102006','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
|