想要在存储过程中以毫秒为单位获取两个时间戳的差异
Posted
技术标签:
【中文标题】想要在存储过程中以毫秒为单位获取两个时间戳的差异【英文标题】:want to get diff of two timestamps in millisec in stored procedure 【发布时间】:2014-12-22 06:19:57 【问题描述】:我对这段代码有疑问:
select pick_id
into pickid
from prov_adapter_pmonitor
where pick_id = 1;
select count(*)
into no_of_picks
from prov_adapter_pmonitor;
WHILE pickid < no_of_picks
loop
SELECT pick_end_time
INTO ts1
FROM prov_adapter_pmonitor
WHERE pick_id=pickid
AND count > 0;
SELECT pick_start_time
INTO ts2
FROM prov_adapter_pmonitor
WHERE pick_id=pickid+1;
SELECT TIMESTAMPDIFF(SECOND,ts2,ts1) from prov_adapter_pmonitor;
select count into cnt from prov_adapter_pmonitor where pick_id=pickid;
rslt := rslt+diff;
cnt1 :=cnt1+cnt;
pickid :=pickid +1;
end loop;
我想要我的两个时间戳 ts1 和 ts2 的毫秒差异,这些时间戳在我的实体中,但它在第三个 select 语句中给出了异常
请给我关于这个的任何想法
【问题讨论】:
您使用的是什么关系型数据库?还有什么错误? oracle 11g,这是它编译成功但运行时给出错误 timestampdiff select 语句的过程 什么错误?我认为timestampdiff 不是一个Oracle-Function而是mysql... 实际上我想要两个时间戳的差异(以毫秒为单位) Excuse...这是一个 Oracle 函数 ;) 什么是错误消息/代码?即 ORA-12345 【参考方案1】:看起来您正在混合使用 mysql 和 oracle 语法。我认为你需要的是 EXTRACT
select extract(second from (ts2 - ts1)) as diff from dual;
【讨论】:
错误 (45,74): PL/SQL: ORA-00923: FROM 关键字未在预期位置找到 哦,我回答的时候没有任何关于数据库的信息。你可以试试from dual
for Oracle
它只给出秒数,但我想要像小时这样的总秒数,分钟也被转换为秒并添加到我们提取的秒数
只需提取这些部分并将它们全部添加在一起。以上是关于想要在存储过程中以毫秒为单位获取两个时间戳的差异的主要内容,如果未能解决你的问题,请参考以下文章