如何计算Oracle中两个时间戳之间的时间差(以毫秒为单位)?

推荐答案

当你减go 两个类型为TIMESTAMP的变量时,你会得到一个INTERVAL DAY TO SECOND,其中包括毫秒数和/或微秒数,具体取决于平台.如果数据库在Windows上运行,systimestamp通常会有毫秒.如果数据库在Unix上运行,systimestamp通常会有微秒.

  1  select systimestamp - to_timestamp( '2012-07-23', 'yyyy-mm-dd' )
  2*   from dual
SQL> /

SYSTIMESTAMP-TO_TIMESTAMP('2012-07-23','YYYY-MM-DD')
---------------------------------------------------------------------------
+000000000 14:51:04.339000000

您可以使用EXTRACT函数提取INTERVAL DAY TO SECOND的各个元素

SQL> ed
Wrote file afiedt.buf

  1  select extract( day from diff ) days,
  2         extract( hour from diff ) hours,
  3         extract( minute from diff ) minutes,
  4         extract( second from diff ) seconds
  5    from (select systimestamp - to_timestamp( '2012-07-23', 'yyyy-mm-dd' ) diff
  6*           from dual)
SQL> /

      DAYS      HOURS    MINUTES    SECONDS
---------- ---------- ---------- ----------
         0         14         55     37.936

然后,您可以将这些组件中的每一个转换为毫秒,并将它们相加

SQL> ed
Wrote file afiedt.buf

  1  select extract( day from diff )*24*60*60*1000 +
  2         extract( hour from diff )*60*60*1000 +
  3         extract( minute from diff )*60*1000 +
  4         round(extract( second from diff )*1000) total_milliseconds
  5    from (select systimestamp - to_timestamp( '2012-07-23', 'yyyy-mm-dd' ) diff
  6*           from dual)
SQL> /

TOTAL_MILLISECONDS
------------------
          53831842

然而,通常情况下,使用INTERVAL DAY TO SECOND表示法或使用小时、分钟、秒等单独的列比计算两个TIMESTAMP值之间的总毫秒数更有用.

Sql相关问答推荐

错误LOS-00302:在Oracle中使用自定义类型时必须声明DBA_PICKLER组件

Snowflake SQL比较克隆x原始计数

使用SQL/R循环查找邻居

Access中执行INSERT INTO查询时出现错误消息

收到%1、%2或%2邮箱的唯一客户

重用传递给 node 的参数-postgres upsert查询

HAVING子句内部过滤的正确方法

如何使用不重复的单个顶级字段(列)向json数组 Select 多行

每个学校 Select N个最新的行,但跳过同一学生的重复行

将具有嵌套 XML 的列转换为 SQL 中的表格格式?

在 SQL Server 中合并两个 XML 列

用替代方案替换 SQL Cursor 以提高性能

如何根据 SQL Server 中 1 条语句中 SELECT 的结果进行 INSERT 或 UPDATE

使用 SQL 计算一年中任意 3 个月期间的总成本

如何使用SELECT语句进行左连接,并根据右表中的特定值过滤结果?

SQL:无重复项的两个聚合函数

正则表达式:停在第一个匹配的其中一个字符位置上

如何将特定值从 JSON 列中的一个字段移动到 PostgreSQL 中的另一个字段?

As400 (IBM i) SQL 表 QSYS2.SYSTABLES 上的元数据

根据条件列出不同的值