将MySQL中的DATETIME值四舍五入到最近的分钟

我在表中有一个DATETIME列,其t值类似于:

|toStampActual      |

|-------------------|

|2014-09-09 13:00:00|

|2014-09-09 13:15:03|

|2014-09-09 13:14:55|

我需要能够将这些值更新为:

|toStampActual      |

|-------------------|

|2014-09-09 13:00:00|

|2014-09-09 13:15:00|

|2014-09-09 13:15:00|

基本上四舍五入到最接近的分钟…大于30秒的所有时间都会增加,小于30秒的任何时间都会减少。

我找到了这个答案https://stackoverflow.com/a/19291128/99401并将SQL更改为

SELECT TIME_FORMAT(

SEC_TO_TIME(

(TIME_TO_SEC(toStampActual) DIV 60) * 60

), '%H:%i:%s') AS rounded_time

FROM `t`

SQL小提琴

但这只会四舍五入。如何根据秒取整?

回答:

一种解决方案(SQL Fiddle)可以是:

SEC_TO_TIME(((TIME_TO_SEC(toStampActual)+30) DIV 60) * 60)

在执行之前,它只将60(的值30)的一半相加DIV

或者,只需使用ROUND(SQL Fiddle)

SEC_TO_TIME((ROUND(TIME_TO_SEC(toStampActual)/60)) * 60)

以上是 将MySQL中的DATETIME值四舍五入到最近的分钟 的全部内容, 来源链接: utcz.com/qa/426294.html

回到顶部