SELECT
r.order_id
,c.order_time
,r.pickup_time
,EXTRACT(epoch FROM (r.pickup_time - c.order_time) / 60) AS diff
FROM runner_orders1 r
JOIN customer_orders1 c ON c.order_id = r.order_id
WHERE distance != 0;
| 订单标识|订单时间|拾取时间|差异|
| - -|- -|- -|- -|
| 一个|2020年1月1日18时05分02秒|2020年01月01日18时15分34秒|10.533333美元|
| 2个|2020年1月1日19时00分52秒|2020年1月1日19时10分54秒|10.033333美元|
| 三个|2020年1月2日23时51分23秒|2020年1月3日00:12:37| 21.233333一人|
| 三个|2020年1月2日23时51分23秒|2020年1月3日00:12:37| 21.233333一人|
| 四个|2020年1月4日13时23分46秒|2020年1月4日13时53分03秒|29.283333美元|
| 四个|2020年1月4日13时23分46秒|2020年1月4日13时53分03秒|29.283333美元|
下面是我上面的sql输出,如果你看到时间戳的天数不同时,值是不正确的。请检查和帮助。
3 | 2020-01-02 23:51:23 | 2020-01-03 00:12:37 | 21.233333
1条答案
按热度按时间xesrikrc1#
您的查询返回的结果 * 完全 * 正确(至少到6位十进制数字)。问题似乎源于你的期望。显然,你正在寻找
diff
是小步舞曲和秒,然而,这不是你得到的。通过提取历元并除以60,你的结果是小步舞曲和小步舞曲的小数部分。在所选的中,pickup_time
和order_time
之间的时间差是21:14(分:秒),返回的结果是21:13.99998
(分:秒,小数秒)。这只是使用epoch不是一个好做法的另一个原因(其他信息请参见Epoch Mania)。通过减去日期来更正结果(您已经在这样做了)。这将以 Hours:Minuets:Seconds 的间隔形式给出结果。对于您的示例,它将返回
00:21:14
(请参阅demo)