2

我需要查询一个数据库,该数据库将返回当月订阅特定服务的人数。我使用以下查询

select  subscriberid, count(*) from ABC where updated time like '2013-05-%' ;

在此查询中,我需要将Updatedtime字段更新为2013-06-%下个月的时间,然后下个月的时间为 07。我希望查询在下个月到来时自动更新,而不是每次都手动更改。

另请注意,我一次需要特定月份的数据,因此请不要建议按月份分组作为答案。

4

4 回答 4

3

一种方法

SELECT subscriberid, COUNT(*) 
  FROM ABC 
 WHERE  YEAR(updated_time) =  YEAR(CURDATE()) 
   AND MONTH(updated_time) = MONTH(CURDATE())

或者

SELECT subscriberid, COUNT(*) 
  FROM ABC 
 WHERE updated_time BETWEEN ADDDATE(LAST_DAY(SUBDATE(CURDATE(), INTERVAL 1 MONTH)), 1) 
                        AND LAST_DAY(CURDATE())
于 2013-06-13T07:08:13.117 回答
1

以下应该可以正常工作:

SELECT 
    subscriberid, 
    count(*) 
from 
    ABC 
where 
    updatedtime LIKE CONCAT(DATE_FORMAT(NOW(),'%Y-%m'), '-%')
于 2013-06-13T07:07:30.580 回答
0

我认为你可以使用DATE_FORMAT功能

 SELECT subscriberid, count(*) as total
 FROM ABC 
 WHERE DATE_FORMAT(updated_time, "%Y-%m") = "2013-05"; 
于 2013-06-13T07:08:02.203 回答
0

使用以下查询:

SELECT subscribersid, updated, COUNT(*) from subscribers 
   WHERE YEAR(updated) = YEAR(NOW()) 
      AND MONTH(updated) = MONTH(NOW())

你可以看到它在这个SQL Fiddle中工作

希望这可以帮助

于 2013-06-13T07:22:56.320 回答