SQL日期距离今天不到几天



我有一个表,其中有发给用户的电子邮件,我想请求接收日期不到两天的用户。这是怎么做的?这是我的SQL表:

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

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

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

试试这个(未测试(:

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

它选择具有结束日期的邮件,该日期等于大于当前日期,但小于当前日期+2。

编辑:我更新了答案,因为OP通知了我使用的DB。如果CURRENT_DATE也不起作用,您可以从内置函数中尝试另一个。

选择*来自度假用户其中STARTDATE=dateadd(day,datediff(day,2,STARTDATE(,0(

这取决于您使用的数据库,但原理基本相同。

在Oracle中,您可以执行类似的操作

select email
from vacation_users
where startdate < sysdate - 2;

它会将您返回到2天前的确切时间(如果是今天的09:53,则为2天前的09:53(。根据您真正需要的内容,您可能需要TRUNC验证这些值(这样您就可以获得没有时间成分的日期(,或者应用一些其他函数或原则,关于可能的索引影响等。

不过,"从今天起不到两天的约会"是。。。究竟是什么?它是STARTDATE还是ENDDATE(或两者的某种组合(?

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

最新更新