在我使用datetime
从数据库创建时间之前
SELECT MONTH(created)+1, count(*)
FROM post_comments
WHERE YEAR(created) = YEAR(CURDATE())
group by MONTH(created)
ORDER BY MONTH(created)
现在我正在使用unix timestamp
。我需要如何更改上述代码,使其工作unix timestamp
。
在创建时间之前:2018-04-28 09:03:02
现在创建的时间如下所示:1524921263
答案 0 :(得分:1)
您可以使用FROM_UNIXTIME()
将所有内容转换为日期:
SELECT MONTH(FROM_UNIXTIME(created))+1, count(*)
FROM post_comments
WHERE YEAR(FROM_UNIXTIME(created)) = YEAR(CURDATE())
GROUP BY MONTH(FROM_UNIXTIME(created))
ORDER BY MONTH(FROM_UNIXTIME(created));
我觉得奇怪的是,您在SELECT
中的月份中添加了1。
您可以将WHERE
更改为:
WHERE created >= UNIX_TIMESTAMP(DATE(CONCAT(YEAR(CURDATE), '-01-01')))
通常,避免在列上使用函数是个好主意。当您选择大量行时,这一点就不那么重要了(除非该列是聚簇索引)。