我有一个包含两列、一个 ID 和一个 unix 时间戳的表(即不是 Mysql 样式,而是从 1970 年开始的纯秒数。)
我想知道每天有多少个时间戳。
到目前为止我的查询是:
SELECT unixtime, count(unixtime)
AS count
FROM core
GROUP BY unixtime
我需要做的当然是将 unixtime 标记四舍五入到最近的一天。我该怎么做呢?
我有一个包含两列、一个 ID 和一个 unix 时间戳的表(即不是 Mysql 样式,而是从 1970 年开始的纯秒数。)
我想知道每天有多少个时间戳。
到目前为止我的查询是:
SELECT unixtime, count(unixtime)
AS count
FROM core
GROUP BY unixtime
我需要做的当然是将 unixtime 标记四舍五入到最近的一天。我该怎么做呢?
使用FROM_UNIXTIME
withDATE
应该可以得到你想要的结果:
SELECT DATE(FROM_UNIXTIME(unixtime)), COUNT(unixtime) AS count
FROM core
GROUP BY DATE(FROM_UNIXTIME(unixtime))
您可以使用整数除法来查找自纪元以来的日期(整数)。
# current day
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2014-04-16 14:52:06 |
+---------------------+
#number of days since epoch - there 86400
mysql> select unix_timestamp() div 86400 as days_since_epoch;
+------------------+
| days_since_epoch |
+------------------+
| 16176 |
+------------------+
#convert back to rounded off day
mysql> select from_unixtime((unix_timestamp() div 86400) * 86400) as today;
+---------------------+
| today |
+---------------------+
| 2014-04-16 00:00:00 |
+---------------------+