您似乎对值存储的内容感到困惑。一 TIMESTAMP 数据类型存储日期和时间,包括年、月、日、时、分、秒和可选的分秒和时区组件;你不能有一个 TIMESTAMP 只有小时,分钟和秒的组成部分,因为它总是有一年一天的组成部分。 如果要存储时间,请执行以下任一操作: 使用 INTERVAL DAY TO SECOND 数据类型(零天); 使用 DATE (或者,如果你想要分数秒, TIMESTAMP )数据类型并将年-日组件设置为固定值(或忽略它们); 使用固定格式的字符串;或 存储午夜后的秒数并使用 TO_DATE( value, 'SSSSS' ) 转换为日期然后 TO_CHAR 根据需要格式化。 我想说,如果你想增加时间,那么使用 INTERVAL 本机支持的数据类型。 例如:
CREATE TABLE times1 ( value INTERVAL DAY TO SECOND );
INSERT INTO times1 ( value ) VALUES ( INTERVAL '12:40' HOUR TO MINUTE );
SELECT * FROM times1;
输出:
| VALUE |
| :------------------ |
| +00 12:40:00.000000 |
如果要显示时间,请使用 DATE 并忽略每日组件,因为您可以使用 TO_CHAR . 例如:
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
CREATE TABLE times2 ( value DATE );
INSERT INTO times2 ( value )
-- Fixed date
SELECT DATE '1970-01-01' + INTERVAL '12:40' HOUR TO MINUTE FROM DUAL UNION ALL
-- Today's date
SELECT TRUNC( SYSDATE ) + INTERVAL '12:40' HOUR TO MINUTE FROM DUAL UNION ALL
-- First of current month
SELECT TO_DATE( '12:40', 'HH24:MI' ) FROM DUAL;
SELECT value, TO_CHAR( value, 'HH24:MI' ) FROM times2;
1条答案
按热度按时间pepwfjgg1#
您似乎对值存储的内容感到困惑。一
TIMESTAMP
数据类型存储日期和时间,包括年、月、日、时、分、秒和可选的分秒和时区组件;你不能有一个TIMESTAMP
只有小时,分钟和秒的组成部分,因为它总是有一年一天的组成部分。如果要存储时间,请执行以下任一操作:
使用
INTERVAL DAY TO SECOND
数据类型(零天);使用
DATE
(或者,如果你想要分数秒,TIMESTAMP
)数据类型并将年-日组件设置为固定值(或忽略它们);使用固定格式的字符串;或
存储午夜后的秒数并使用
TO_DATE( value, 'SSSSS' )
转换为日期然后TO_CHAR
根据需要格式化。我想说,如果你想增加时间,那么使用
INTERVAL
本机支持的数据类型。例如:
输出:
如果要显示时间,请使用
DATE
并忽略每日组件,因为您可以使用TO_CHAR
.例如:
输出:
db<>在这里摆弄