SQL查询的时间间隔

问题描述 投票:1回答:3

我有两张桌子 - userorders。在用户中,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`

但是这样不行......

mysql sql
3个回答
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

2
投票

在OracleDB中,它将是这样的:

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

1
投票

使用左连接在这里不正确。还将输出作为日期进行类型转换

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

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

© www.soinside.com 2019 - 2024. All rights reserved.