在甲骨文中约会

时间:2015-10-25 14:02:50

标签: sql oracle datetime

我可以获取以下值:

SELECT * FROM table WHERE ATTENDANCE_DATE < SYSDATE;

但没有

的记录
SELECT * FROM table WHERE ATTENDANCE_DATE between SYSDATE and SYSDATE -20;

这有什么问题?

2 个答案:

答案 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;