我想在一个SQL查询中按月显示数据?是不是可以在mysql中

时间:2017-03-08 08:44:29

标签: mysql sql

我有一个数据库并保存了一年的数据。我希望按月访问所有数据。喜欢(01-01-2017-01-30-2017)。我的列类型日期时间

date_table
01-01-2016
01-02-2016
02-02-2017
.....
.....

我想要展示

date_table                       count
01-01-2016 to 30-01-2016         5
01-02-2016 t0 28-02-2016         10

3 个答案:

答案 0 :(得分:1)

有一个返回年份和月份的派生表。 GROUP BY其结果和计数:

select y, m, count(*)
from
(
    select year(date_column) y , month(date_column) m
    from tablename
)
group by y, m

我不太了解MySQL,所以你必须自己格式化输出。

答案 1 :(得分:1)

您可以使用mysql的内置函数LAST_DAY,如下所示:

只需在此处替换“t”,表名为

SELECT CONCAT( CONCAT(mnth, '-01'), ' to ', LAST_DAY(CONCAT(mnth, '-01')) ) AS date_table, cnt FROM (
    select substr(cast(date_table as CHAR), 1, 7) AS mnth, count(*) AS cnt from    t
    group by substr(cast(date_table as CHAR), 1, 7)
) outertable

答案 2 :(得分:0)

如果您的日期在SQL-Server

中的类型为DateTime
SELECT DATENAME(MONTH,TimeStamp) AS [MONTH]
                , DATEPART(YY,TimeStamp) [YEAR]     
                , SUM(*) Count
FROM Table
WHERE TimeStamp IS NOT NULL             
GROUP BY DATENAME(MONTH,TimeStamp), DATEPART(YY,TimeStamp)

结果就像这样

MONTH   YEAR    Count
December2015    237
October 2015    51
August  2016    0
January 2016    9
March   2016    160