如何执行以下操作
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)
它方便地返回2月的最后一天 - 2010-02-28。因此它知道1月份意味着2月份28天(闰年29天),如果是奇数月份则是31天,如果是偶数月份则是30天。我想在我的查询中保留此功能。
基本上,我想根据他想要的结算频率确定一个人的下一个账单日期。有没有更好的方法来实现这一目标?
答案 0 :(得分:3)
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