我写了这个查询,它工作正常,除了在 2 月!出于某种原因,因为 FEB 使用INTERVAL 1 MONTH
它读回 JAN 的函数有 28 天。它应该只从 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
给定任何日期,您可以使用它来获取该月的第一天:
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