我写了这个查询并且工作正常,除了在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
答案 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