sql查询时间间隔

bvhaajcl  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(519)

我有两张table- user 以及 orders . in user是中有关用户的所有信息 orders 是订单吗 dt_star 以及 dt_end -服务。当他们购买服务时,我会把当前日期写进去 dt_start 三个月后服务到期。我必须在每个用户的服务到期前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`

但这样不行。。。

jbose2ul

jbose2ul1#

在oracledb中有点像这样:

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

nnsrf1az2#

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

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

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

tp5buhyn

tp5buhyn3#

更改为

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

相关问题