想要在存储过程中以毫秒为单位获取两个时间戳的差异

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 它只给出秒数,但我想要像小时这样的总秒数,分钟也被转换为秒并添加到我们提取的秒数 只需提取这些部分并将它们全部添加在一起。

以上是关于想要在存储过程中以毫秒为单位获取两个时间戳的差异的主要内容,如果未能解决你的问题,请参考以下文章

如何在jquery中以秒为单位获取两个日期之间的差异?

Python中以分钟为单位的日期差异

如何在 c++ 中以毫秒为单位获得系统启动时间?

如何在 Mysql 中以 unix 毫秒为单位存储日期?

如何在 PHP 中以毫秒为单位获取当前时间?

两个日期时间之间的差异(以毫秒为单位)(Informix)