我可以获取以下值:
SELECT * FROM table WHERE ATTENDANCE_DATE < SYSDATE;
但没有
的记录SELECT * FROM table WHERE ATTENDANCE_DATE between SYSDATE and SYSDATE -20;
这有什么问题?
答案 0 :(得分:6)
如果你重写第二个where子句到它意味着什么,那很明显。
表达式between SYSDATE and SYSDATE -20
相当于:
where ATTENDANCE_DATE >= sysdate and ATTENDANCE_DATE <= sysdate - 20;
你的意思是:
where ATTENDANCE_DATE between sysdate - 20 and sysdate;
理论上,SQL标准定义了symmetric
选项,允许任何&#34; order&#34;值,以便以下可以做你想要的:
between symmetric SYSDATE and SYSDATE - 20
但不幸的是,Oracle确实不支持此功能。
答案 1 :(得分:3)
你的地方总是错误的。您需要更改订单。
SELECT *
FROM table
WHERE ATTENDANCE_DATE BETWEEN SYSDATE - 20 AND SYSDATE;