我该怎么做类似如下

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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top