如何将时间缩短到最近的15分钟段

don*_*onL 22 mysql time rounding

我怎样才能在MySQL中将时间缩短到最接近的15分钟(例如0,15,30,45)?

Don*_*Don 28

SELECT SEC_TO_TIME(FLOOR((TIME_TO_SEC(CURTIME())+450)/900)*900)
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我使用CURTIME()作为输入时间,但您可以使用任何时间字段.

900秒= 15分钟(圆到的时间),450秒是一半(提供圆形元素).我已经用1800/900测试了最近的半小时,应该与其他人一起工作(600/300 10分钟等).


Gav*_*wey 19

SELECT FROM_UNIXTIME( TRUNCATE(UNIX_TIMESTAMP(NOW()) / 900,0)*900);
Run Code Online (Sandbox Code Playgroud)

这可以推广到任何时间值.900秒= 15分钟.您可以将900替换为任何其他舍入因子.

  • 为了更好(更快)的结果,使用[整数除法](http://dev.mysql.com/doc/refman/5.0/en/arithmetic-functions.html#operator_div)(向下舍入,但不是向上,但不应该' (重要) - 或从数字中减去`MOD 900`而不是除数和乘法. (2认同)