首页 > 解决方案 > 在 where 条件下使用 MAX 函数获取时间

问题描述

嗨,我有一个表格,每 5 秒插入一次新行。下面是我用来获取最大 index_end_time 的每个索引 ID 的最新记录的查询。

在此处输入图像描述

现在我需要检查是否有任何记录的 MAX(INDEX_END_TIME) 比当前系统时间戳超过 5 分钟。

像下面这样的东西

SELECT  count(INDEX_ID) 
  FROM PS8BPMDB.BPM_TASK_INDEX_JOB 
  GROUP BY INDEX_ID 
  HAVING   MAX(INDEX_END_TIME) > SYS_EXTRACT_UTC(SYSTIMESTAMP)UTC_SYS - 5 minutes;

标签: sqloracleplsql

解决方案


要对数据类型的列进行计算,TIMESTAMP您需要使用INTERVAL数据类型。

SELECT count(INDEX_ID) 
  FROM PS8BPMDB.BPM_TASK_INDEX_JOB 
  GROUP BY INDEX_ID 
HAVING MAX(INDEX_END_TIME) > systimestamp - interval '5' minute;

推荐阅读