如何完成sql查询显示整个月?

时间:2014-04-11 03:02:29

标签: php mysql sql

我有一个看似简单的问题,但我自己没有解决它

我有这个mysql表,其中包含网站访问者的统计信息

+-----------------------------+
+ date        | visits        +
+-----------------------------+
+  2014-03-01 | 198           +
+  2014-03-02 | 259           +
+  2014-03-03 | 94            +                 
+-----------------------------+

我有这个查询

SELECT * FROM statistics WHERE date >= '2014-03-01' and date <= '2014-03-30';

我的问题是,如果我可以用一个SQL查询完成整个月,那么我可以得到这个输出:

+-----------------------------+
+ date        | visits        +
+-----------------------------+
+  2014-03-01 | 198           +
+  2014-03-02 | 259           +
+  2014-03-03 | 94            +                 
+  2014-03-04 | 0             +                 
+  2014-03-05 | 0             +                 
+  2014-03-06 | 0             +
...             
+  2014-03-30 | 0             +                 
+-----------------------------+

非常感谢你。

3 个答案:

答案 0 :(得分:0)

一个SQL查询是什么意思? 在这里,您还使用一个查询。

&#34; SELECT * FROM statistics WHERE date&gt; =&#39; 2014-03-01&#39;和日期&lt; =&#39; 2014-03-30&#39;&#34;

答案 1 :(得分:0)

我认为你可以使用Between子句。你可以写一个像

那样的

“SELECT * FROM statistics WHERE date BETWEEN'2014-03-01'''2014-03-30'”。

答案 2 :(得分:0)

两件事。

SQL无法(轻松)创建没有数据的行。这意味着如果2014-03-05没有行,那么你就不会获得一行,更不用说计数为0的那一行。唯一真正的方式来创建&#34;这样的空行是另一个表,其中包含LEFT JOIN到的日期列表。但这非常简单。

其次,你可以花一整个月的时间。值得一提的是:

WHERE date BETWEEN '2014-03-01' AND DATE_ADD('2014-03-01', INTERVAL 1 MONTH)