我正在使用在线APEX Oracle DB进行一些培训,但遇到其中一项功能困扰,这使我抓狂。
我已经进行了一些测试,并且能够长期使用它,但没有缩短语法。使用缩短的语法会返回一个我无法弄清的错误。任何帮助将不胜感激。
我尝试过的事情:
select add_months('2015/10/12', 4) from dual
返回错误:
ORA-01846: not a valid day of the week
我要做什么:
select add_months(to_date('2015/10/12', 'yyyy/mm/dd'), 4) from dual
当我使用add_months(to_date())
格式
我得到了Friday, 12 February, 2016
如果我使用add_months(arg1, arg2)
,它将返回错误。
答案 0 :(得分:2)
答案 1 :(得分:1)
我能够弄清楚这一点。我运行了systimestamp
,这就是返回的内容:
Saturday, 02 February, 2019
。
然后我将其插入到我遇到麻烦的功能中
select add_months(systimestamp, 4) from dual
并返回正确的结果:
Sunday, 02 June, 2019
取决于我的日期格式。
答案 2 :(得分:0)
使用下面的SQL查找当前的NLS_DATE_FORMAT
SELECT value FROM v$nls_parameters WHERE parameter ='NLS_DATE_FORMAT';
基本上,当您将日期作为varchar2字符串传递时,此格式用于隐式日期转换。
因此,我们应该始终使用TO_DATE()