Unix时间戳不会工作

时间:2018-04-28 13:16:46

标签: php mysql sql

在我使用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

1 个答案:

答案 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')))

通常,避免在列上使用函数是个好主意。当您选择大量行时,这一点就不那么重要了(除非该列是聚簇索引)。