Oracle获得一个月的记录

时间:2015-12-01 17:45:01

标签: sql oracle date

在尝试检索特定月份的记录时,我的WHERE子句出现问题。

WHERE NVL(TO_CHAR(prsl.DEADLINE, 'YYYY-MM-DD'), TO_CHAR(prsl.SUBMIT_DATE, 'YYYY-MM-DD')) >= DATE '2015-11-01'
AND NVL(TO_CHAR(prsl.DEADLINE, 'YYYY-MM-DD'), TO_CHAR(prsl.SUBMIT_DATE, 'YYYY-MM-DD')) < DATE '2015-12-01'

基本上这样做,如果DEADLINE不为null,请使用它来比较日期范围。如果为null,请使用SUBMIT_DATE进行比较。

使用上述查询,我​​收到此错误:

ORA-01861: literal does not match format string

2 个答案:

答案 0 :(得分:0)

您可以尝试EXTRACT

EXTRACT(MONTH FROM prsl.DEADLINE) = 11
AND EXTRACT(YEAR FROM prsl.DEADLINE) = 2015

答案 1 :(得分:0)

另一种解决方案是:

WHERE TRUNC(COALESCE(prsl.DEADLINE, prsl.SUBMIT_DATE), 'MM') = DATE '2015-11-01'