MySQL 时间戳向最近小时取整
MySQL 中,我们经常需要使用到时间戳。在某些场景下,我们需要把一个时间戳向最近的整小时取整,即对一个时间戳进行舍入。
比如我们需要统计每小时的用户活跃量,那么就需要把每个用户的登陆时间 round 到最近小时,拿到的时间戳便为整小时时间戳。
这里提供两种方法实现这个功能。
阅读更多:MySQL 教程
方法一:使用 MySQL 内置函数 DATE_FORMAT
MySQL 中 DATE_FORMAT 函数可以将时间戳按照指定的格式进行格式化,其中 %H 代表小时数。
SELECT UNIX_TIMESTAMP(), DATE_FORMAT(FROM_UNIXTIME(UNIX_TIMESTAMP()), '%Y-%m-%d %H:00:00')
这里通过 UNIX_TIMESTAMP 函数获取当前时间戳,然后通过 FROM_UNIXTIME 将时间戳转换成日期时间。最后使用 DATE_FORMAT 将日期时间格式化成以小时为单位的时间。
方法二:使用时间戳算术运算
时间戳是一个整数类型,所以可以进行算术运算。我们的思路是将时间戳先除于 3600,再乘于 3600,向下取整即可得到最近小时的时间戳。
SELECT UNIX_TIMESTAMP(), FLOOR(UNIX_TIMESTAMP() / 3600) * 3600
这里先用 UNIX_TIMESTAMP 获取当前时间戳,再将时间戳除于 3600,得到对应的小时数,向下取整得到整小时数。最后将这个小时数乘于 3600 得到最近的整小时时间戳。
总结
以上就是两种 MySQL 时间戳向最近小时舍入的实现方法。在具体应用中,需要根据实际情况,选择不同的方法实现该功能。