MYSQL DATE_SUB在FEB中无法正常工作

时间:2013-02-01 07:36:15

标签: mysql sql

我写了这个查询并且工作正常,除了在FEB月份!出于某种原因,因为FEB使用INTERVAL 1 MONTH函数有28天,它也会回读到JAN。它应该只从FEB的开始到FEB的结束读取!

SELECT SUM(IF((`date` BETWEEN DATE_SUB('2013-02-28', INTERVAL 1 MONTH) AND '2013-02-28'), earnings, "null")) AS Rev0 
FROM table

1 个答案:

答案 0 :(得分:0)

如果有任何日期,您可以使用它来获取该月的第一天:

DATE_SUB('2013-02-28', INTERVAL DAY('2013-02-28')-1 DAY)

或者也是这样:

CAST(DATE_FORMAT('2013-02-28' ,'%Y-%m-01') as DATE)

并且在最后一天,已经定义了一个函数:

LAST_DAY('2013-02-28')

您的查询将成为:

SELECT
  SUM(IF((`date` BETWEEN DATE_SUB('2013-02-28', INTERVAL DAY('2013-02-28')-1 DAY)
          AND LAST_DAY('2013-02-28')), earnings, "null")) AS Rev0 
FROM table