SQL语言中按月查询
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL语言中按月查询相关的知识,希望对你有一定的参考价值。
用户输入年份,然后就可以显示那一年每个月的记录。
select * from pop where pdate>'2010-01-01 00:00:00.000' and pdate<'2010-01-31 23:59:59.999'
在这条语句上修改,查询2-12月的记录。
或者来个高手写一条可行的语句。
创建 PHP 数组,其中包含从 SQL 中按月提取的日期和订单数
【中文标题】创建 PHP 数组,其中包含从 SQL 中按月提取的日期和订单数【英文标题】:Create PHP arrays with dates and number of orders extracted by month from SQL 【发布时间】:2013-12-17 14:54:18 【问题描述】:我有一个名为“订单”的表,其中包含不同日期的多行。
我想构建一个包含每月订单数的图表,所以我需要查询一个如下所示的数组:
一月------- 3 2 月 ------- 1 三月------- 0 四月 ------- 8 ......正如所见,即使没有订单,月份也会显示。
从那里,我需要将数组的数量加载到如下内容中:
$data1y=array(3,1,0,8...);
虽然我会有很多这样的月份:
$graph->xaxis->SetTickLabels(array('Jan','Feb','March','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'));
我尝试了类似这样的 SQL,但没有运气:
SELECT COUNT(*) FROM orders GROUP BY month(date)
【问题讨论】:
SELECT COUNT(*) FROM orders GROUP BY month(date) ....结果是什么 这个问题解释了如何在 MS SQL 中做你想做的事情的概念:Include missing months in Group By query 创建一个将月份列为键的数组,然后使用 SQL 的结果填充值。 【参考方案1】:您的查询应该是这样的:
SELECT DATE_FORMAT(`date`, '%Y%m') AS `Ym`, COUNT(*) AS `count`
FROM `orders`
GROUP BY `Ym`
demo
附言您可以使用 PHP 或 SQL (如this)填充缺失的月份。
【讨论】:
这个看起来很棒。我怎样才能只将计数分配给数组'$data1y=array()'? 我正在获取类似:“$orders = $ordersQuery->fetchAll(PDO::FETCH_ASSOC)” 数组 ( [0] => 数组 ( [Ym] => 十二月 [count] => 7 ) [1] => 数组 ( [Ym] => 十一月 [count] => 11 ) [2] => 数组 ( [Ym] => 十月 [count] => 9 ) [3] => 数组 ( [Ym] => 九月 [count] => 8 ) [4] => 数组 ( [Ym] => 八月 [count] => 9 ) [5] => 数组 ( [Ym] => 七月 [count] => 1 ) [6] => 数组 ( [Ym] => 五月 [count] => 2 ) [7] => 数组([Ym] => 四月 [count] => 1)) 那太好了,但我使用的是 PHP 5.2,所以不支持 DateTime::createFromFormat... @samyb8:然后像this example 一样创建 SQL 查询,这应该适用于 5.2。【参考方案2】:使用如下查询后,您可以在 PHP 中完成所有操作:-
SELECT date FROM orders
如果在运行后,例如 PDOStatement::fetchAll()
,您有一个名为 $dateArray 的数组,其中包含数据库中的日期,那么您可以执行以下操作:-
$countArray = ['Jan' => 0, 'Feb' => 0, 'Mar' => 0, 'Apr' => 0, 'May' => 0, 'Jun' => 0, 'Jul' => 0, 'Aug' => 0, 'Sep' => 0, 'Oct' => 0, 'Nov' => 0, 'Dec' => 0];
foreach($dateArray as $dateString)
$date = new \DateTime($dateString);
$countArray[$date->format('M')]++;
I have setup a working example here.
有关DateTime classes 和PDO 的更多信息,请参阅PHP 手册。
【讨论】:
以上是关于SQL语言中按月查询的主要内容,如果未能解决你的问题,请参考以下文章