用于在DB中搜索日期的SQL查询

时间:2017-04-03 18:46:22

标签: php

我有一个MySQL数据库,我用以下格式存储日期

2017-04-03

我需要拆分或搜索日期以获取我在DB中所有日期之间的1月,2月,3月等所有日期和记录

$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 ]
}, {

如果有人能在每个月帮助我使用过滤器查询会对我有很大的帮助

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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月等等