-1

我该如何做类似以下的事情

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 MONTH 意味着 2 月 28 天(闰年 29 天),奇数月 31 天,偶数月 30 天。我想在我的查询中保留此功能。

基本上,我想根据他所需的计费频率来确定一个人的下一个计费日期。有没有更好的方法来实现这一目标?

4

1 回答 1

2
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

或者

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
于 2010-06-16T23:35:43.750 回答