2017-04-03 89 views
0

我有一个MySQL数据库,我存储日期的格式如下SQL查询来搜索日期在DB

2017-04-03 

我需要拆分或搜索历史可以让所有的日期和记录代表一月,二月,三月等我在DB中的所有日期之间

$result = mysql_query("SELECT * FROM lbs_trace_etrack WHERE MONTH(lbs_date) = MONTH(CURDATE()) AND YEAR(lbs_date) = YEAR(CURDATE()) ORDER BY lbs_date DESC, lbs_time DESC"); 

我使用上面的查询来搜索当前的月份和年份。我正在绘制一张图表,显示每个月的统计数据,这是我希望每个月计数的原因

我需要按以下格式放置搜索计数。

var seriesData = [{ 
    name: 'Hijackings', 
    data: [Value Jan, Value Feb, Value March, and all the other months ] 
}, { 

如果任何人都可以直接帮我在每个月的查询过滤器会帮我很大

回答

0

我发现这个查询工作

$query = "SELECT rep_date FROM `bureau` WHERE MONTH(rep_date) = 1 AND type = 'Overdue'"; 
     $result = mysql_query($query); 
echo " ".mysql_num_rows($result)." " 
?> 
          <?php 
while($rows=mysql_fetch_array($result)){ 
?> 

使用MONTH(rep_date)= 1将过滤所有1月份更改1到2会做2月等等

2

尝试此查询:

select count(*) as total, MONTH(lbs_date) as track_month, YEAR(lbs_date) as track_year 
FROM lbs_trace_stack t 
GROUP BY track_year, track_month 

或者,如果你只是想一个月只需要一年,你只需要删除

MONTH(lbs_date) and track_month --> if you want to see the year remove this 

YEAR(lbs_date) and track_year --> if you want to see the month remove this 

从选择部分和按部分组。

上瘾的是,如果你想过滤一个或多个月,你当然可以使用where语句来设置你的过滤器。 有多种方法可以写一些地方条件做同样的事情,例如:

SELECT COUNT(*) as total, MONTH(lbs_date) as track_month 
FROM lbs_trace_stack t 
-- WHERE track_month = 2 -> February 
-- WHERE track_month > 2 -> Form March 
-- WHERE track_month = 2 OR track_month = 3 -> February or March 
-- WHERE MONTHNAME(lbs_date)='February' --> if you want to use month name 
GROUP BY track_month 
+0

这很好,但有一些方法,我可以陈述在这个查询中,它应该组合所有1月在一起。我将不得不运行一个新的查询来分组其他月份我可以在某处指定它应该分组的月份。我需要将几个月分组在一起,即使我必须运行不同的查询,但需要逐月获取它们,并在该查询中指出它是一个特定月份,它应该过滤 –

+0

我刚刚编辑答案,请检查现在是否适合您需要。 – user2548436

+0

它仍然过滤所有月份我需要指定月份我已经尝试过这个 $ query =“select count(*)as total,MONTH(rep_date)as track_month FROM bureau WHERE type ='Overdue' AND MONTH(rep_date) = 1 GROUP BY track_month“〜where MONTH(rep)date)= 1试图关注月01 01月 –