当前位置: 首页 > 面试题库 >

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

邢承弼
2023-03-14
问题内容

我在表中有一个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)


 类似资料:
  • 问题内容: 我有两个Int值(它们必须是Ints),我希望它们在方程式中四舍五入到最接近的值; 该方程使变量始终向下舍入到最小值。例如,以下数字表示; 20000/7000等于2.857 …但是变量显示。 我如何舍入到最接近的数字 而不将其更改为Double 问题答案: 对于 非负 整数,以下函数以纯整数算术给出所需的结果: 例子: 这个想法是 这是任意签名的整数的一种可能实现,该整数也不会溢出:

  • 我有两个Int值(它们必须是Int ),当在一个等式中时,我希望它们四舍五入到最近的值; 此等式使变量始终四舍五入到最小值。例如,数字如下所示; 20000 / 7000 等于 2.857...但变量显示 。 如何使四舍五入到最接近的数字而不将其更改为双精度

  • 问题内容: 如何在MySQL中将时间舍入到最接近的15分钟(例如0、15、30、45)? 问题答案: 在此示例中,我使用CURTIME()作为输入时间,但是您可以使用任何时间字段。 900秒= 15分钟(四舍五入的时间),450秒是(提供四舍五入元素的)一半。我已经用1800/900测试了最近的半小时,应该与其他人一起工作(600/300持续10分钟等)。

  • 问题内容: 我来到了Java程序的一部分,我需要四舍五入到最接近的百位数,并认为可能有某种方法可以做到这一点,但我想没有。因此,我在网上搜索了示例或任何答案,但由于所有示例看起来都接近最接近的一百,因此至今仍未找到任何答案。我只想这样做并向上取整。也许有一些我忽略的简单解决方案。我已经尝试了其他功能,但到目前为止还没有找到答案。如果有人可以帮助我解决这个问题,我将不胜感激。 如果我的电话号码是20

  • 问题内容: 我试图找到一种方法将值四舍五入到最接近的0.05。例如: 0.93四舍五入为0.95 0.81四舍五入为0.80 0.65停留0.65 0.68至0.70 0.67至0.65 用Java有没有简单的方法可以做到这一点? 问题答案: 一种选择如下: 将该值乘以20。 使用进行四舍五入为最接近的整数。 再除以20。 例如: 希望这可以帮助!

  • 问题内容: 我想要一个用52调用时返回55的php函数。 我已经尝试过该功能: 它返回 90, 但我要 95 。 谢谢。 问题答案: 这可以通过多种方式来完成,具体取决于您的首选舍入约定: 1.四舍五入到5 的 下一个 倍数,不包括当前数字 行为:50个输出55,52个输出55 2.四舍五入到 最接近 的5的倍数,包括当前数字 行为:50个输出50、52个输出55、50.25个输出50 3.舍入到