【问题标题】:Adding Seconds to datetime in MySQL在 MySQL 中为 datetime 添加秒数
【发布时间】:2011-05-02 15:23:54
【问题描述】:

我正在尝试根据发生的某些事件为日期添加秒数。通常,如果这些事件同时发生,就会增加太多的秒数。这是我目前在 PHP 和 MySQL 中的做法

$time_add_on = 15 - $seconds_left;
DATE_ADD(STR_TO_DATE(end_dt,'%Y-%m-%d %H:%i:%s'), INTERVAL '".$time_add_on."' SECOND

这样做是从 'end_dt' 中减去 15 并将其添加到 'end_dt' 中剩余的当前秒数,基本上还剩 15 秒。

这里的目标基本上是增加 15 秒或将日期重置为仅剩 15 秒。这会导致问题,而不是重置为剩余 15 秒,而是增加 30 秒或 45 秒。

有人知道最好的方法吗?

【问题讨论】:

    标签: php datetime mysql


    【解决方案1】:
    UPDATE table end_dt = DATE_ADD(end_dt, INTERVAL 15 second)
    WHERE DATE_SUB(end_dt, INTERVAL 15 second) <= NOW()
    

    我认为这就是你想要的,当 end_dt 距离现在 15 秒时,基本上会在 end_dt 上增加 15 秒

    编辑新查询 此查询应该有效:

    UPDATE `table`
        SET end_dt = DATE_ADD(end_dt, INTERVAL (15 - TIMESTAMPDIFF(SECOND, NOW(), end_dt)) SECOND)
    WHERE DATE_SUB(end_dt, INTERVAL 15 second) <= NOW()
    

    【讨论】:

    • 嘿洛根,这行不通,因为如果还剩 10 秒,再加上 15 秒,那将是 25 秒。
    【解决方案2】:
    TIMESTAMPADD(SECOND,15,NOW())
    

    单位 = SECOND 添加秒数 = 15

    【讨论】:

    • 用小数加秒怎么样?例如,在 Limesurvey 数据库中,时间都以秒为单位给出小数:765.97。或者有没有办法在 MySQL 中舍入这些小数时间?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-01
    • 2017-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    • 1970-01-01
    相关资源
    最近更新 更多