从时间值中减去 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;
这是我的 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;