我在oracle数据库中有两个时间戳,我试图减去,但一个是格式“6/26/2023 2:20:35 PM”,一个只是时间“14:20:42”。我发现用trunc我可以删除时间戳,但找不到删除日期的方法,这样我就可以减去时间。我尝试了时间戳和trunc。我想将“6/26/2023 2:20:35 PM”转换为“14:20:35”,格式可以减去另一个时间戳。
guicsvcw1#
使用TIMESTAMP和INTERVAL DAY(0) TO SECOND(0)数据类型:
TIMESTAMP
INTERVAL 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 |
NLS_TIMESTAMP_FORMAT
fiddle
1条答案
按热度按时间guicsvcw1#
使用
TIMESTAMP
和INTERVAL DAY(0) TO SECOND(0)
数据类型:然后,您可以用途:
其中,输出:
| 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