我有两张桌子 - user
和orders
。在用户中,orders
中有关用户的所有信息都是dt_star
和dt_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`
但是这样不行......
改成
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
在OracleDB中,它将是这样的:
SELECT * FROM user, orders
WHERE orders.user_id = user.id
AND sysdate BETWEEN orders.dt_end - 5 AND orders.dt_end;
使用左连接在这里不正确。还将输出作为日期进行类型转换
`SELECT `user`.* FROM `user`, `orders`
where orders.user_id=user.id
and CURDATE() = date('`orders`.`dt_end`' - interval 5 day)
LIMIT 30`
这将给出所有用户的列表,应在5天前通知