我有一张桌子,上面有我要发送给用户的电子邮件,我想发出请求以要求约会的用户从今天起不到两天。如何做到这一点? 这是我的SQL表:
CREATE TABLE vacation_users(EMAIL VARCHAR(255), STARTDATE DATE, ENDDATE DATE);
答案 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
(或这两者的某种组合)?