如何在 Oracle 中查找相对于日期的时差?

How to find the time difference with respect to date in Oracle?

我想找出日期类型列中的值与该特定日期的固定时间之间的时差。

考虑一下,

value in column - 4/16/2011 4:00:19 PM

Fixed time as - 3:00:00 PM

我期待 1hr 0min 19sec ago 的回答。无论哪种类型我都可以接受。

谢谢

因为您不关心 returned 是什么数据类型,我可能会转换为 timestamp 这样您就可以获得 interval day to second return编辑

SQL> select cast( sysdate as timestamp ) from dual
  2  ;

CAST(SYSDATEASTIMESTAMP)
---------------------------------------------------------------------------
15-MAR-15 04.05.46.000000 PM

SQL> ed
Wrote file afiedt.buf

  1  select cast( sysdate as timestamp ) -
  2            cast( trunc(sysdate) + interval '15' hour as timestamp )
  3*   from dual
  4  /

CAST(SYSDATEASTIMESTAMP)-CAST(TRUNC(SYSDATE)+INTERVAL'15'HOURASTIMESTAMP)
---------------------------------------------------------------------------
+000000000 01:06:18.000000

如果你想return一个字符串而不是一个区间,你可以使用extract从区间

中提取数据
SQL> ed
Wrote file afiedt.buf

  1  select extract( hour from delta ) || ' hours, ' ||
  2         extract( minute from delta ) || ' minutes, ' ||
  3         extract( second from delta ) || ' seconds ago'
  4    from (
  5  select cast( sysdate as timestamp ) -
  6            cast( trunc(sysdate) + interval '15' hour as timestamp ) delta
  7    from dual
  8* )
SQL> /

EXTRACT(HOURFROMDELTA)||'HOURS,'||EXTRACT(MINUTEFROMDELTA)||'MINUTES,'||EXTRACT(
--------------------------------------------------------------------------------
1 hours, 10 minutes, 46 seconds ago