MySQL查询:ORDER BY日期加上其他记录

时间:2013-09-19 22:08:56

标签: mysql sql date

我有一张桌子:

last_billed DATE DEFAULT "0000-00-00"
bill_interval varchar(10) DEFAULT "Monthly" (other values are: Quarterly, Half-yearly, Yearly)

我运行一个简单的查询,但需要:

ORDER BY (last_billed + bill_interval)

根据bill_interval的值,这应该给出一个比last_billed日期更远的1个月,3个月,6个月或12个月的日期。 现在,如果需要,我可以将bill_interval更改为任何内容,如果它可以使查询成为可能。

我不知道从哪里开始。因此,任何反馈都会一如既往地受到赞赏。

2 个答案:

答案 0 :(得分:1)

尝试:

ORDER BY last_billed + 
    CASE bill_interval
        WHEN "Montly" THEN INTERVAL 1 MONTH
        WHEN "Half-Yearly" THEN INTERVAL 6 MONTH
        WHEN "Yearly" THEN INTERVAL 1 YEAR
    END

如果您将bill_interval列更改为几个月会更容易,那么您可以这样做:

ORDER BY last_billed + INTERVAL bill_interval MONTH

答案 1 :(得分:0)

ORDER BY DateAdd("m", 
  case substring(bill_interval,1,1) when 'M' then 1 
                                    when 'Q' then 3 
                                    when 'Y' then 12 
  end, last_billed)