我得到了这个错误 ORA-01858: a non-numeric character was found where a numeric was expected
. 如果我删除代码中的第二行,我就不会得到错误,所以我想知道问题是否与timestamp变量的解码或数据类型有关。
TRUNC(TIME_P) >= TO_DATE('2009-01-01', 'YYYY-MM-DD') AND
TIME_P <= DECODE('2010-01-01', NOW, SYSDATE, TO_DATE('YYYY-MM-DD'))
2条答案
按热度按时间qhhrdooz1#
这就是你想要的我相信:
正如您提到的“first arg is optional param”,所以我输入了“your\u first参数”表达式,只是想提醒您,您将把它放在那里。
由于您输入的格式,因此发生了错误
('YYYY-MM-DD')
因为正确的格式是'DD-MON-YYYY'
此外,在转换之前,您需要trunc该时间戳值。。。如果不使用正确的格式和trunc,您可以在这里看到将发生的错误:https://dbfiddle.uk/?rdbms=oracle_18&fiddle=83cca74815a323bc72283adeb7396617
ep6jt1vc2#
我可以建议这样的吗?
它使用日期文字,
case
而不是decode()
(case
是标准sql)。首字母trunc()
也是多余的。第二行对我来说没什么意义。如果您只想要不在未来的日期,那么:
或者,如果要传入参数并使用该参数而不是sysdate: