SQL查询时间间隔

时间:2018-07-19 06:51:00

标签: mysql sql

我有两个表-userorders。在{user}中,orders中有关用户的所有信息是带有dt_stardt_end的订单-用于服务。当他们购买服务时,我会在dt_start中写上当前日期,并在3个月后该服务过期。我必须在每个用户的服务到期前5天发送电子邮件。我将使用Cronjob进行此操作,但是问题是要为每个用户选择服务过期前5天。我的查询是这样的:

`SELECT `user`.* FROM `user` 
LEFT JOIN `orders` ON orders.user_id=user.id 
WHERE CURDATE() > '`orders`.`dt_end`' - interval 5 day 
LIMIT 30`

但是这样不起作用...

3 个答案:

答案 0 :(得分:3)

更改为

SELECT `user`.* FROM `user` 
  LEFT JOIN `orders` ON orders.user_id=user.id 
   WHERE CURDATE() > DATE_SUB( `orders`.`dt_end` ,interval 5 day )
LIMIT 30

答案 1 :(得分:2)

在OracleDB中,有点像这样:

SELECT * FROM user, orders
WHERE orders.user_id = user.id
AND sysdate BETWEEN orders.dt_end - 5 AND orders.dt_end;

答案 2 :(得分:1)

在这里使用左联接是不正确的。还将输出类型转换为日期

`SELECT `user`.* FROM `user`, `orders` 
   where orders.user_id=user.id 
    and CURDATE() = date('`orders`.`dt_end`' - interval 5 day) 
LIMIT 30`

这将给出所有用户的名单,应在5天前通知