我试图弄清楚如何比较 where 子句中日期减法的结果。
客户订阅了一项服务,因此链接到具有结束日期的订阅。我想显示将在未来 2 周内结束的订阅列表。我没有设计数据库,但注意到 End_Date 列类型是 varchar 而不是日期。我无法更改。
我的问题如下:如果我尝试使用此请求选择减法的结果:
SELECT(TO_DATE(s.end_date,'YYYY-MM-DD') - TRUNC(SYSDATE)) , s.name
from SUBSCRIPTION s WHERE s.id_acces = 15
这将起作用,并给我订阅结束和当前日期之间的天数。
但是现在,如果我尝试在比较的子句中包含完全相同的请求:
SELECT s.name
from SUBSCRIPTION S
WHERE (TO_DATE(s.end_date,'YYYY-MM-DD') - TRUNC(SYSDATE)) between 0 and 16
我会收到一个错误:“ORA-01839:指定月份的日期无效”。任何帮助,将不胜感激..