问题描述
请帮我B是对的吗?
或C
解决方法
您最好的选择是尝试。
SQL> alter session set nls_date_format = 'dd_mm_yyyy';
Session altered.
SQL> -- A
SQL> select to_char(to_date('29-10-2019') + interval '2' month + interval '6' day
2 + interval '120' second,'dd-mon-yyyy') as datum from dual;
DATUM
-----------
04-jan-2020
SQL> -- B
SQL> select to_char(to_date('29-10-2019') + interval '3' month + interval '7' day
2 + interval '120' second,'dd-mon-yyyy') as datum from dual;
DATUM
-----------
05-feb-2020
SQL> -- C
SQL> select to_char(to_date('29-10-2019') + interval '2' month + interval '4' day
2 + interval '120' second,'dd-mon-yyyy') as datum from dual;
DATUM
-----------
02-jan-2020
SQL> -- D
SQL> select to_char(to_date('29-10-2019') + interval '2' month + interval '6' day
2 + interval '120' second,'dd-mon-yyyy') as datum from dual;
DATUM
-----------
04-jan-2020
SQL> -- E
SQL> select to_char(to_date('29-10-2019') + interval '2' month + interval '5' day
2 + interval '120' second,'dd-mon-yyyy') as datum from dual;
DATUM
-----------
03-jan-2020
SQL>
所以-是的,C是正确的。
,所有查询在语法上均无效,并且会引发如下异常:
- 他们有反引号,而不是单引号;
-
INTEVAL '120 SECOND
中应该有第二个引号,并且INTERVAL
拼写错误;和 - 围绕
TO_CHAR
函数的格式模型,引号丢失了,前面的逗号也分开了。
如果忽略(许多)语法错误,那么您将从2019-10-29
开始并想进入2020-01-02
;相差2个月(这将使您进入2019-12-29
)和4天。由于NLS
的设置,秒数没有显示,因为它们没有显示。这将给出答案C
。