【问题标题】:how to calculate timestampdiff between different rows and columns in one table?如何计算一张表中不同行和列之间的时间戳差异?
【发布时间】:2017-07-17 00:19:39
【问题描述】:

我正在尝试计算 statistic 表的不同行中 end_datetimestart_datetime 之间的时间差以及 中的结果集pause_time

我这样的查询没有执行。

update statistic
set pause_time = TIMESTAMPDIFF(hour, a.start_datetime, b.end_datetime)
from statistic a
inner join statistic b on a.id = (b.id - 1)
order by a.id asc

我收到一个错误:

查看与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“FROM statistic a INNER JOIN statistic b ON b.id=(a.id - 1) ORDER BY a.id ASC”附近使用正确的语法QMYSQL。我的表格统计:

<html> <head> <title></title> </head> <body> <div> id<span class="Apple-tab-span" style="white-space:pre"> </span>   |    start_datetime<span class="Apple-tab-span" style="white-space:pre"> </span>     |   end_datetime<span class="Apple-tab-span" style="white-space:pre"> </span>      |     pause_time</div> <p> <span style="font-size:12px;">1 <span class="Apple-tab-span" style="white-space:pre"> </span>     |    2016-10-13T23:14:05<span class="Apple-tab-span" style="white-space:pre"> </span>  |  <strong><span style="color:#f00;"> 2016-10-14T07:03:02</span> <span class="Apple-tab-span" style="white-space:pre"> </span></strong>|      </span></p> <p> <span style="font-size:12px;">2<span class="Apple-tab-span" style="white-space:pre"> </span>      |   <span style="color:#f00;"><strong> 2016-10-14T15:25:56 </strong> </span>|   2016-10-14T22:03:50<span class="Apple-tab-span" style="white-space:pre"> </span> |</span></p> <p> <span style="font-size:12px;">3      <span class="Apple-tab-span" style="white-space:pre"> </span>|    2016-10-13T15:25:30<span class="Apple-tab-span" style="white-space:pre"> </span>  |   2016-10-13T22:10:01  |</span></p> <p> <span style="font-size:12px;">4      <span class="Apple-tab-span" style="white-space:pre"> </span>|    2016-10-13T01:09:11<span class="Apple-tab-span" style="white-space:pre"> </span>  |   2016-10-13T02:59:30<span class="Apple-tab-span" style="white-space:pre"> </span> |</span></p> <div>  </div>  </body> </html>

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    您使用的语法是SQL server's。

    查看MySQL's - https://dev.mysql.com/doc/refman/5.7/en/update.html

    试试这个:

    update statistic a
    join   statistic b on a.id = (b.id - 1)
    set a.pause_time = TIMESTAMPDIFF(hour, a.start_datetime, b.end_datetime)
    

    【讨论】:

    • UPDATE statistic a JOIN statistic b ON b.id = (a.id + 1) SET b.pause_time = TIMESTAMPDIFF(SECOND, a.end_datetime, b.start_datetime)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    相关资源
    最近更新 更多