在where子句中使用SQL的日期差异

时间:2017-11-02 01:42:44

标签: sql date

从名为“订阅”的表中,我想列出从当天起0到3天之间过期的所有项目。

$Today = date('Y-m-d');

|--------|----------|------------|
| SUB_Id | SUB_Name | SUB_End    |
|--------|----------|------------|
| 1      | Banana   | 2017-12-01 |
| 2      | Apple    | 2017-11-03 |
| 3      | Pear     | 2017-11-03 |
|--------|----------|------------|

我应该有最后两行SUB_End - $Today <= 3天。

我尝试了什么:

select * from Subscriptions
where DATEDIFF(SUB_End , $today) <= 3;

3 个答案:

答案 0 :(得分:0)

我会在SQL中完全执行此操作:

select s.*
from Subscriptions s
where sub_end >= curdate() and
      sub_end <= curdate() + interval 3 day;

答案 1 :(得分:0)

你可以试试这个。 编辑:基于Oracle的解决方案。

select s.*
from Subscriptions s
where s.sub_end BETWEEN TRUNC(SYSDATE - 3) AND TRUNC(SYSDATE)

答案 2 :(得分:0)

您可以使用以下查询,这仅适用于sql server:

select * from Subscriptions
where DATEDIFF(day, SUB_End , getdate()) <= 3;