SET @time := '2018-11-08 00:36:50.000000';
SET @intervalInMinutes := 15
SELECT FROM_UNIXTIME((Select FLOOR ((select UNIX_TIMESTAMP(@time) / (@intervalInMinutes* 60))) * (@intervalInMinutes*60)));
我需要在mysql中编写一个查询,转换用户指定的最近间隔类别中的日期/时间。示例:
例1:“2018-10-24 17:45:50.000000”
15分钟的时间间隔将转换为“2018-10-24 17:45:00”
30分钟的时间间隔将转换为“2018-10-24 17:30:00”
60分钟的时间间隔将转换为“2018-10-24 17:00:00”
例2:“2018-10-24 17:36:20.000000”;
15分钟的时间间隔将转换为“2018-10-24 17:30:00”
30分钟的时间间隔将转换为“2018-10-24 17:30:00”
60分钟的时间间隔将转换为“2018-10-24 17:00:00”
我已经写了上面的查询,似乎工作良好。然而,在这篇文章中,第一个答案有一个评论,指出这种方法将失败的日期时间之间的夏时制。我不明白他所说的例子。我注意到的其他方法对于我的案例来说更为复杂。我想知道这会对我的情况有什么影响。任何建议/例子都值得赞赏。或者,有没有更好的方法通过编写一个更简单的查询来避免这种情况?p、 我希望这是适用于MySQL5.6,5.7和8.0。
1条答案
按热度按时间u2nhd7ah1#
在使用将datetime转换为unixtime并返回时可能遇到的问题可以在mysql数据库中得到很好的解释。
为了安全起见,我会用另一种方法:
这个想法非常相似:你把时间转换成秒,四舍五入再转换回来。