1

我写了这个查询,它工作正常,除了在 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
4

1 回答 1

1

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

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
于 2013-02-01T08:01:24.180 回答