如何在联接表中向订阅日期添加时间间隔

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 |

以上是关于如何在联接表中向订阅日期添加时间间隔的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQLite 中向表中添加变量?

如何在android中向AlarmManager添加3个日期

如何在codeigniter的当前日期插入天间隔?

如何在控制台中向已打印的表中添加新行?

如何在 React Hooks 中向表中添加行而不重复?

如何使用间隔 1 分钟在两个日期之间将时间序列数据生成到 Oracle PL/SQL 中的表中?