从时间值中减去 datediff

substract timediff from time value

这是我的 table:

    +----------+---------------------+
    | estimate | timestamp           |
    +----------+---------------------+
    | 05:00:00 | 2015-12-02 13:35:14 |
    +----------+---------------------+
    1 row in set (0.00 sec)

我正在尝试实施计划作业以每小时创建额外的自动行,以从估计时间中减去过去的时间。

我可以启动计划的作业并使用 timediff 计算自此之后经过的时间,但我无法从估计时间中减去 timediff。

我猜 mysql 不太关心我希望将估计时间列表示为一段时间。相反,它只显示了一个没有日期的时间。

select timediff(now(),timestamp) from t1;

这给了我需要的时差:

    +---------------------------+
    | timediff(now(),timestamp) |
    +---------------------------+
    | 00:27:03                  |
    +---------------------------+
    1 row in set (0.00 sec)

但是当我这样做时:

     select estimate-timediff(now(),timestamp) as timeleft from t1;

结果是:

    +----------+
    | timeleft |
    +----------+
    |    46568 |
    +----------+
    1 row in set (0.01 sec)

我想得到什么:

    +----------+
    | timeleft |
    +----------+
    | 04:32:57 |
    +----------+
    1 row in set (0.01 sec)

由于 timediff(),我的示例中的时间可能会有点偏差,但希望您能理解我的问题。一定有一个我遗漏的简单解决方案,但我花了半天时间在谷歌上搜索到这一点,但 timediff 不会让我松懈。

拜托,谢谢!

PS。我还没有找到解决方案,但我想我找到了可能导致问题的原因。显然,减法是通过使用绝对值完成的 'estimate' 列不使用秒,因为它是绝对值,结果是完全错误的。

    mysql> select abs(estimate) from t1;
    +----------+
    | abs(estimate) |
    +----------+
    |    50000 |
    +----------+
    1 row in set (0.00 sec)

    mysql> select abs(timediff(now(),timestamp)) from t1;
    +--------------------------------+
    | abs(timediff(now(),timestamp)) |
    +--------------------------------+
    |                           2318 |
    +--------------------------------+
    1 row in set (0.00 sec)

那么有没有一种简单的方法可以强制 mysql 在时间列上使用秒数?还是我的table有问题,估算格式有误?

像那样使用timediff:-

timediff(estimate,timediff(now(),timestamp))

您的查询:-

select timediff(estimate,timediff(now(),timestamp)) 
as timeleft from t1;