SQL日期距离今天不到几天

时间:2018-07-19 07:41:03

标签: sql date hsqldb days

我有一张桌子,上面有我要发送给用户的电子邮件,我想发出请求以要求约会的用户从今天起不到两天。如何做到这一点? 这是我的SQL表:

CREATE TABLE vacation_users(EMAIL VARCHAR(255), STARTDATE DATE, ENDDATE DATE);

5 个答案:

答案 0 :(得分:1)

尝试一下(未测试):

SELECT EMAIL from vacation_users 
    WHERE ENDDATE < DATEADD(day, +2, CURRENT_DATE) AND ENDDATE > CURRENT_DATE

它选择结束日期大于当前日期但小于当前日期+ 2的邮件。

编辑:我更新了答案,因为OP通知了我有关所使用的数据库的信息。如果CURRENT_DATE也不起作用,则可以从built-in functions尝试另一个。

答案 1 :(得分:1)

答案是这样。我使用HSQLDB,这就是答案。

SELECT * FROM vacation_user WHERE (ENDDATE < (SYSDATE + 2 DAY));

答案 2 :(得分:0)

SELECT * 
FROM vacation_users 
WHERE (DATEADD(day,2,ENDDATE)) < (CONVERT(date, SYSDATETIME()))

答案 3 :(得分:0)

选择* 来自Vacation_users 其中STARTDATE = dateadd(day,datediff(day,2,STARTDATE),0)

答案 4 :(得分:0)

这取决于您使用的数据库,但是原理或多或少是相同的。

在Oracle中,您将执行

select email
from vacation_users
where startdate < sysdate - 2;

,它将使您返回2天前的确切时间(如果今天是09:53,那么它将是2天前的09:53)。根据您的实际需求,您可能需要TRUNC添加这些值(以便获得不包含时间成分的日期)或应用其他功能或原理(可能对索引产生影响等)。

但是,“距离今天不到两天”是……确切是什么?是STARTDATE还是ENDDATE(或这两者的某种组合)?