Oracle时间戳减法

j2cgzkjk  于 2023-06-29  发布在  Oracle
关注(0)|答案(1)|浏览(158)

我在oracle数据库中有两个时间戳,我试图减去,但一个是格式“6/26/2023 2:20:35 PM”,一个只是时间“14:20:42”。我发现用trunc我可以删除时间戳,但找不到删除日期的方法,这样我就可以减去时间。
我尝试了时间戳和trunc。我想将“6/26/2023 2:20:35 PM”转换为“14:20:35”,格式可以减去另一个时间戳。

guicsvcw

guicsvcw1#

使用TIMESTAMPINTERVAL DAY(0) TO SECOND(0)数据类型:

CREATE TABLE table_name (
  col1 TIMESTAMP,
  col2 INTERVAL DAY(0) TO SECOND(0)
);

INSERT INTO table_name (col1, col2)
VALUES (TIMESTAMP '2023-06-26 14:20:35', INTERVAL '14:20:42' HOUR TO SECOND);

然后,您可以用途:

SELECT col1,
       col2,
       col1 - col2
FROM   table_name;

其中,输出:
| COL2| COL1-COL2| COL1-COL2 |
| - -----|- -----| ------------ |
| 2019 - 04 - 22 00:00:00| 2023-06-25 23:59:53.000000000| 2023-06-25 23:59:53.000000000 |

  • 注:TIMESTAMP是一种二进制数据类型,由7个字节组成,表示世纪,世纪年,月,日,小时,分钟,秒,零到六个字节表示小数秒。它总是具有这些组件,并且从不以任何特定格式存储。显示时您看到的是客户端应用程序应用的格式(对于SQL*Plus和SQL Developer,客户端应用程序使用的默认格式是NLS_TIMESTAMP_FORMAT会话参数,其他客户端将使用自己的设置)。

fiddle

相关问题