mysql - 需要在结果 sql 表中查找多行的 2 个时间戳之间的时间差(以小时为单位)
问题描述
我有 3 个表,我在这些表上执行了某些操作,并且能够到达下表Table1
OID SID OID_create SID_create
817953 951261 2020-05-01 00:00:16 2020-05-01 10:15:32
817953 951407 2020-05-01 00:00:16 2020-05-01 10:30:13
817954 952564 2020-05-01 00:00:16 2020-05-01 12:01:33
817954 954544 2020-05-01 00:00:16 2020-05-01 17:45:18
817955 956318 2020-05-01 00:00:16 2020-05-02 07:00:59
817956 959146 2020-05-01 00:00:16 2020-05-02 10:46:26
为了找到 SID_create 和 OID_create 的区别,我使用了以下查询
select OID, SID, OID_create, SID_create, (SID_create - OID_create) as Difference
from Table1
这导致了这样的表格
OID SID OID_create SID_create Difference
817953 951261 2020-05-01 00:00:16 2020-05-01 10:15:32 101516
817953 951407 2020-05-01 00:00:16 2020-05-01 10:30:13 102997
817954 952564 2020-05-01 00:00:16 2020-05-01 12:01:33 120117
817954 954544 2020-05-01 00:00:16 2020-05-01 17:45:18 174502
817955 956318 2020-05-01 00:00:16 2020-05-02 07:00:59 1070043
817956 959146 2020-05-01 00:00:16 2020-05-02 10:46:26 1104610
请帮助了解差异值是否以秒、分钟或小时或其他单位为单位。我宁愿直接在几个小时内得到结果,如何实现
解决方案
在 MySQL 中直接减去日期不是一个好主意。虽然这不会引发错误,但您可能会得到意想不到的结果。据我了解,每个日期都转换为数字表示(例如'2020-05-01 00:00:16'
将变为20200501000016
),然后将其减去。
在 MySQL 中,获取给定单位中日期表达式之间差异的一种简单方法是使用date 函数timestampdiff()
:
timestampdiff(hour, OID_create, SID_create)
推荐阅读
- google-chrome - MediaStreamTrack 停止方法不起作用。它被弃用了吗?
- javascript - 如何从 JavaScript 呈现的响应页面下载最高分辨率的图像?
- drupal-8 - 规则 - 如何检查用户是否有角色
- php - 在 localhost 中运行代码日历 google 但不能在在线服务器中运行
- matplotlib - '语法错误:关键字不能是表达式
- node.js - 为什么 pm2 日志在 Node js 中不显示实时?
- xml - Twilio:从 XML 获取数字
- html - 使用 SpringMVC 的 @PathVariable 时,Thymeleaf 无法解析静态资源
- javascript - 如何在特定时间偏移处将动画 SVG 绘制到画布上?
- websocket - ESP8266 WebSocket 与 BlueHost