如何在联接表中向订阅日期添加时间间隔
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在联接表中向订阅日期添加时间间隔相关的知识,希望对你有一定的参考价值。
我有2个表的事务,计划,因此我要通过加入这两个表来获取订阅的用户数据,同时我想添加plan_validity列作为带有订阅日期的间隔,以检查有效性是否已完成,但同时添加间隔它在'))'附近显示了意外的date_interval错误,因此如何向用户的订阅日期添加间隔。
transaction table
id user id plan_id subscription_date
1 1 1 2019-06-08
2 2 3 2019-07-05
plan table
id plan_validity
1 3 month
2 6 month
3 9 month
mysql查询:
select tr.*,t.subscription_date,DATE_ADD(t.subscription_date, INTERVAL p.plan_validity)
from transaction t inner join plan p on t.plan_id=plan.id where t.user_id=1
答案
尝试使用CASE
表达式检查要添加的间隔类型:
select t.*,
case
when p.plan_validity like '%month'
then date_add(t.subscription_date, interval p.plan_validity month)
when p.plan_validity like '%year'
then date_add(t.subscription_date, interval p.plan_validity year)
end result
from transaction t inner join plan p
on t.plan_id = p.id
where t.user_id = 1
请参见demo。结果:
| id | user_id | plan_id | subscription_date | result |
| --- | ------- | ------- | ------------------- | -----------|
| 1 | 1 | 1 | 2019-06-08 | 2019-09-08 |
以上是关于如何在联接表中向订阅日期添加时间间隔的主要内容,如果未能解决你的问题,请参考以下文章