- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一种情况,我确信这种情况很常见,但我不知道该怎么做,也不知道要搜索什么来找到相关的示例/解决方案,这让我很困扰。我对 MySQL 比较陌生(之前一直在使用 MSSQL 和 PostgreSQL),我能想到的每一种方法都被 MySQL 中缺少的某些功能所阻止。
我有一个“日志”表,它简单地列出了许多不同的事件及其时间戳(存储为日期时间类型)。表中有很多与这个问题无关的数据和列,所以假设我们有一个像这样的简单表:
CREATE TABLE log (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(16),
ts DATETIME NOT NULL,
eventtype VARCHAR(25),
PRIMARY KEY (id)
)
假设某些行的 eventtype = 'start' 而其他行的 eventtype = 'stop'。我想要做的是以某种方式将每个“startrow”与每个“stoprow”耦合并找到两者之间的时间差(然后将每个名称的持续时间相加,但这不是问题所在)。每个“开始”事件都应该在“开始”事件之后的某个阶段发生相应的“停止”事件,但是由于数据收集器出现问题/错误/崩溃,可能会丢失一些。在那种情况下,我想无视没有“合作伙伴”的事件。这意味着给定数据:
foo, 2010-06-10 19:45, start
foo, 2010-06-10 19:47, start
foo, 2010-06-10 20:13, stop
..我想忽略 19:45 开始事件,而不仅仅是使用 20:13 停止事件作为停止时间来获得两个结果行。
我尝试以不同的方式将表与自身连接起来,但对我来说,关键问题似乎是找到一种方法来正确识别给定“名称”的“开始”事件对应的“停止”事件”。问题与您在餐 table 上的员工在上类和下类时遇到的问题完全相同,并且想了解他们实际工作了多少。我确信必须有众所周知的解决方案,但我似乎找不到它们......
最佳答案
我相信这可能是实现目标的更简单方法:
SELECT
start_log.name,
MAX(start_log.ts) AS start_time,
end_log.ts AS end_time,
TIMEDIFF(MAX(start_log.ts), end_log.ts)
FROM
log AS start_log
INNER JOIN
log AS end_log ON (
start_log.name = end_log.name
AND
end_log.ts > start_log.ts)
WHERE start_log.eventtype = 'start'
AND end_log.eventtype = 'stop'
GROUP BY start_log.name
它应该运行得更快,因为它消除了一个子查询。
关于sql - 如何合并两行并计算MySQL中两个时间戳值之间的时间差?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3017468/
我对 EPOCH 时间有疑问。 我需要计算两个数据包之间的时间差。我不太确定如何: printf("Epoch Time: %d:%d seconds\n", header->ts.tv_sec, h
我正在尝试了解数字旋转的速度。我有一个程序,其中计数器从 0 开始。 每次用户单击按钮“加 1”。它将计数器递增 1。 计数器最大值为 255。在 255 之后它回到 0。 现在我想显示从 0 到递增
基本上我想做的是根据 SIP 信令获取通话持续时间。 我有一个包含如下所示记录的表,我正在尝试编写一个返回以下内容的 SELECT 语句: id callid date
您好,我需要有关 MySQL 数据库查询的帮助。 我有一个看起来像这样的表: ID TRACKID DATE Name Action 38
细节。我有包含以下列的注释表。 ID - INT(3) Date - DateTime Note - VARCHAR(100) Tile - Varchar(100
午夜过后我很难计算时间: String time = "15:00-18:05"; //Calculating OK //String time = "22:00-01:05"; //Not
我使用 XML 从 MySQL 数据库中抓取了两个日期,如下所示。我想获得以秒为单位的时差。 我写了这个脚本,但它给出了“NaN” function show(){ var t1 = new Dat
如何在 MYSQL phpMyAdmin 数据库中以 (TIME 00:00:00) 格式更新另一个字段(整列)的时间差 当我在 PHP 中执行此操作时,我不断收到 0:00:00 并且没有结果。其
我的表单中有两个字段,用户可以在其中选择输入时间(开始时间、结束时间),我想在更改这些字段时重新计算另一个字段的值。 我想做的是获取 2 次之间的小时数。因此,例如,如果我的开始时间为 5:30,结束
我想使用 Date 和 Calendar 类计算 java 中两个日期/时间之间的差异。我的格式是“2012-01-24 12:30:00 PM”。 我已经实现了我自己的方法,也用谷歌搜索它以与其他人
MySQL 服务器上的访客数据库如下所示id 是主键整数类型,firstname 和 lastname 是文本类型,访客 id 是整数类型 id firstname lastname
我是一名优秀的程序员,十分优秀!