91.View the Exhibit and examine the structure of the PROMOTIONS table. Which two SQL statements woul

91.View the Exhibit and examine the structure of the PROMOTIONS table. Which two SQL statements would execute successfully?

91.View the Exhibit and examine the structure of the PROMOTIONS table. Which two SQL statements woul_第1张图片

A.UPDATE promotions SET promo_cost = promo_cost+ 100 WHERE TO_CHAR(promo_end_date, 'yyyy') > '2000';
B.SELECT promo_begin_date FROM promotions WHERE TO_CHAR(promo_begin_date,'mon dd yy')='jul 01 98';
C.UPDATE promotions SET promo_cost = promo_cost+ 100 WHERE promo_end_date > TO_DATE(SUBSTR('01-JAN-2000',8));
D.SELECT TO_CHAR(promo_begin_date,'dd/month') FROM promotions WHERE promo_begin_date IN (TO_DATE('JUN 01 98'), TO_DATE('JUL 01 98'));
答案:AB
A:正确
B:正确
C:错误
D:错误
C和D的错误都是因为没有指定转换的格式,而默认的格式是通过

NLS_DATE_LANGUAGEE和NLS_DATE_FORMAT决定的,因此他们都存在问题,可以进行如下修改

SQL> select TO_DATE(SUBSTR('01-JAN-2000',8)) from dual;
select TO_DATE(SUBSTR('01-JAN-2000',8)) from dual
ORA-01861: 文字与格式字符串不匹配
SQL> alter session set NLS_DATE_FORMAT='yyyy';
Session altered

SQL> select TO_DATE(SUBSTR('01-JAN-2000',8)) from dual;
TO_DATE(SUBSTR('01-JAN-2000',8
------------------------------
2000/12/1

SQL> select TO_DATE('JUN 01 98') from dual;
select TO_DATE('JUN 01 98') from dual
ORA-01841: (完整) 年份值必须介于 -4713 和 +9999 之间, 且不为 0

SQL> alter session set NLS_DATE_FORMAT='MON DD RR';
Session altered

SQL> alter SESSION SET NLS_DATE_LANGUAGE='AMERICAN';
Session altered

SQL> select TO_DATE('JUN 01 98') from dual;
TO_DATE('JUN0198')
------------------
1998/6/1


你可能感兴趣的:(1z0-051)