Mysql的ADDDATE()或DATE_ADD()与表列?
-
27-09-2019 - |
题
我该怎么做类似如下
SELECT ADDDATE(t_invoice.last_bill_date, INTERVAL t_invoice.interval t_invoice.interval_unit)
FROM t_invoice
...其中列t_invoice.last_bill_date是日期,t_invoice.interval是整数并且t_invoice.interval_unit是一个字符串。
我喜欢的ADDDATE()函数是,如果我写
SELECT ADDDATE('2010-01-31', INTERVAL 1 MONTH)
据方便地返回二月的最后一天 - 2010-02-28。所以它知道1个月工具28天,二月(29闰年),31,如果奇数月,30如果偶数月。我想在我的查询以保留这个功能。
基本上,我想确定基于他所需的结算频率的人的下一次结算日期。有没有更好的方式来实现这一目标?
解决方案
SELECT t_invoice.last_bill_date + INTERVAL
CASE t_invoice.interval_unit
WHEN 'minute' THEN t_invoice.interval
WHEN 'hour' THEN t_invoice.interval*60
WHEN // etc...
END MINUTE as col1
FROM t_invoice
OR
SELECT
CASE t_invoice.interval_unit
WHEN 'minute' THEN t_invoice.last_bill_date + INTERVAL t_invoice.interval MINUTE
WHEN 'hour' THEN t_invoice.last_bill_date + INTERVAL t_invoice.interval HOUR
WHEN // etc...
END as col1
FROM t_invoice
不隶属于 StackOverflow