我有两个表-user
和orders
。在{user}中,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`
但是这样不起作用...
答案 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天前通知