Sql 查找是否已过x分钟
所以,我需要知道是否已经过去了20分钟,但是,使用时间戳证明我不擅长pl/sql 这是我的问题Sql 查找是否已过x分钟,sql,oracle,plsql,Sql,Oracle,Plsql,所以,我需要知道是否已经过去了20分钟,但是,使用时间戳证明我不擅长pl/sql 这是我的问题 SELECT systimestamp currenttime, lockeddtts original, lockeddtts + to_number( ( SELECT value FROM configurationTable WHERE key = 'UNLOCK_TIME' ) ) * INTERVAL '1' MINU
SELECT
systimestamp currenttime,
lockeddtts original,
lockeddtts + to_number( (
SELECT
value
FROM
configurationTable
WHERE
key = 'UNLOCK_TIME'
) ) * INTERVAL '1' MINUTE added20,
CASE
WHEN systimestamp > lockeddtts + to_number( (
SELECT
value
FROM
configurationTable
WHERE
key = 'UNLOCK_TIME'
) ) * INTERVAL '1' MINUTE THEN 1
ELSE 0
END
passed20
FROM
xTable
这就是我得到的结果
根据我的理解和逻辑,当前时间确实比最初的时间加上20分钟还要长,但甲骨文告诉我它不是
我错过了什么
我这样做是为了使用oracle服务器时间,而不是后端服务器,这样就不会弄乱时区,但它仍然不与我合作
编辑:
感谢@Kjetil S。对于答案,我只需要稍微调整一下它就可以工作了,将日期转换为时间戳,它就可以工作了
这是我最后的疑问
SELECT
CASE
WHEN systimestamp > to_timestamp(lockeddtts + to_number( (
SELECT
value
FROM
configurationTable
WHERE
key = 'UNLOCK_TIME'
) ) / ( 24 * 60 )) THEN 1
ELSE 0
END
passed20
FROM
xTable
证明它有效
感谢并希望这对其他人有效我相信
interval
可以用某种方式,但我认为Oracle的“经典”方式是将天数添加到时间戳
或日期
列中。当处理分钟而不是天时,只需除以24*60,这是一天中的分钟数。比如:
with c as (select value minutes from configurationTable where key='UNLOCK_TIME')
select
systimestamp currenttime,
lockeddtts original,
lockeddtts+minutes/(24*60) lockeddtts_plus_minutes,
case when systimestamp >= lockeddtts+minutes/(24*60) then 1 else 0 end passed
from xTable,c
这样使用
和
可以避免编写选择。。。从configurationTable中
两次。我确信可以以某种方式使用间隔
,但我认为Oracle的“经典”方法是将天数添加到时间戳
或日期
列中。当处理分钟而不是天时,只需除以24*60,这是一天中的分钟数。比如:
with c as (select value minutes from configurationTable where key='UNLOCK_TIME')
select
systimestamp currenttime,
lockeddtts original,
lockeddtts+minutes/(24*60) lockeddtts_plus_minutes,
case when systimestamp >= lockeddtts+minutes/(24*60) then 1 else 0 end passed
from xTable,c
这样使用
和
可以避免编写选择。。。从configurationTable中
两次。@Randy抱歉,我看不出这有什么关系。我想问的是为什么比较失败,而不是向时间戳字段@XmoůomoŜ添加时间。对不起,我不认为有必要,因为我已经在xTable中显示了我需要测试的数据(图像结果查询中的原始列),而对于configurationTable,我只需要将一个“20”字符串转换为数字来添加它;我刚才才意识到。谢谢我正在看这个。什么类型的lockedts
字段?带时区的时间戳?@Randy抱歉,我看不出这有什么关系。我想问的是为什么比较失败,而不是向时间戳字段@XmoůomoŜ添加时间。对不起,我不认为有必要,因为我已经在xTable中显示了我需要测试的数据(图像结果查询中的原始列),而对于configurationTable,我只需要将一个“20”字符串转换为数字来添加它;我刚才才意识到。谢谢我正在看这个。什么类型的lockedts
字段?带时区的时间戳?谢谢这确实有效。顺便说一句,我不需要使用with,在我最初的查询中,我只做检查,从不检索数据。我只是出于测试和调试的目的添加了数据检索。请检查我的编辑以获得澄清,这确实有效。顺便说一句,我不需要使用with,在我最初的查询中,我只做检查,从不检索数据。我只是出于测试和调试的目的添加了数据检索。请检查我的编辑以获得澄清