我有以下查询,当我添加
NVL
函数时,出现错误
ORA-01843:不是有效的月份
如果参数
SYSDATE
是 :Transaction_DateTO
,我只想使用结束日期范围作为当前日期 (NULL
)。
SELECT *
FROM MyTable TXN
WHERE
TXN.TRANSACTION_DATE BETWEEN
to_date(to_char(:Transaction_DateFROM,'YYYY-MM-DD') || ' 00:00:00', 'YYYY-MM-DD HH24:Mi:SS')
AND
NVL(to_date(to_char(:Transaction_DateTO,'YYYY-MM-DD') || ' 23:59:59', 'YYYY-MM-DD HH24:Mi:SS'), SYSDATE)
如果您将日期作为绑定变量传递,则不要在其上使用
TO_CHAR
和 TO_DATE
,只需使用 TRUNC
(并添加一天并使用非包含上限)。
SELECT *
FROM MyTable TXN
WHERE TXN.TRANSACTION_DATE >= TRUNC(:Transaction_DateFROM)
AND TXN.TRANSACTION_DATE < TRUNC(COALESCE(:Transaction_DateTO, SYSDATE)) + 1