我有一个数据库并保存了一年的数据。我希望按月访问所有数据。喜欢(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
答案 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