Mysql ADDDATE()或DATE_ADD()与表列?

Mysql ADDDATE()或DATE_ADD()与表列?,mysql,sql-date-functions,Mysql,Sql Date Functions,我该如何做下面这样的事情 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_单位为字符串 我喜欢ADDDATE()函数的地方是如果我写一个 SELECT ADDDATE('20

我该如何做下面这样的事情

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_单位为字符串

我喜欢ADDDATE()函数的地方是如果我写一个

SELECT ADDDATE('2010-01-31', INTERVAL 1 MONTH)
它方便地返回2月的最后一天-2010-02-28。所以它知道1个月意味着2月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


该查询对您有效吗?该查询对您有效吗?当我执行SELECT DATEADD('2010-01-30',间隔1个月)时,它方便地给出了2月的最后一天-2010-02-28。有没有一个简单的方法来修改你的查询以支持它?@John:你的意思是1个月应该被解释为30天?@eagle-如果是4月、6月等,则为30天。。。31天,如1月、3月、5月、7月等。。2月28日或29日。当我选择日期添加(“2010-01-30”,间隔1个月)时,它方便地给出2月的最后一天-2010-02-28。有没有一个简单的方法来修改你的查询以支持它?@John:你的意思是1个月应该被解释为30天?@eagle-如果是4月、6月等,则为30天。。。31天,如1月、3月、5月、7月等。。2月28日或29日。
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