我正在使用从其他人那里继承的脚本来开发 Ingres DB。我需要更改脚本以提取最新的 start_time 和 end_time 事件的 action_times,以及两者之间的差异。下面列出了 DB 的示例
id_num | version | action_id | action_time
----------------------------------------------------------------------------
1 2 start_time 2014-05-26 14:58:14
1 2 end_time 2014-05-26 14:58:16
1 4 start_time 2014-05-27 10:10:57
1 4 end_time 2014-05-27 10:10:11
到目前为止,我想出的是:
SELECT max(a.action_time) as BIG, max(b.action_time) as SMALL, max(a.action_time) - max(b.action_time) as DIFF
FROM table1 as a, table1 as b,
WHERE a.id_num = '1' AND a.action_id = 'end_time' AND b.id_num = '1' AND b.action_id = 'start_time'
但结果如下:
BIG SMALL DIFF
----------------------------------------------------------------------------
2014-05-27 10:10:11 2014-05-27 10:10:57 null
如果已经回答了这样的问题(我相信它可能已经回答了),我深表歉意,但我花了几天时间浏览各种论坛,但找不到类似的例子,可能是我对搜索的措辞条款。任何帮助将不胜感激,我很确定我会在大学里介绍过类似的东西,但那是几年前的事了,这些天我的 SQL 有点生疏了。提前致谢!
编辑:所以经过一些研究,我想出了以下将在 DB GUI 中工作的内容:
SELECT ingresdate(varchar(max(a.action_time))) as BIG, ingresdate(varchar(max(b.action_time))) as SMALL, date_part('secs',ingresdate(varchar(max(a.action_time))) - ingresdate(varchar(max(b.action_time)))) as DIFF
FROM table1 as a, table1 as b,
WHERE a.id_num = '1' AND a.action_id = 'end_time' AND b.id_num = '1' AND b.action_id = 'start_time'