我需要将一天 24 小时存储在表“time_hours”中。这是我的表的结构:
Create table time_hours
(HOURS number,
HOUR_RANGE VARCHAR (20),
HOUR_MIN VARCHAR (20),
HOUR_MAX VARCHAR(20));
这是我到目前为止的脚本:
Insert into time_hours(HOURS,
HOUR_RANGE,
HOUR_MIN,
HOUR_MAX)
Select
to_number(to_char(t,'HH24'),'00'),
to_char(t,'HH24:MI:SS'),
to_char(t,'HH24:MI:SS'),
to_char(t,'HH24:MI:SS')
FROM
(
Select trunc(sysdate) + (level-1)/24 as t
FROM dual
Connect by level <=24
);
结果是:
Hours | HOUR_RANGE | HOUR_MIN | HOUR_MAX
0 00:00:00 00:00:00 00:00:00
1 01:00:00 01:00:00 01:00:00
..
23 23:00:00 23:00:00 23:00:00
但是我需要这个输出:
Hours | HOUR_RANGE | HOUR_MIN | HOUR_MAX
0 00h-00h59 00:00:00 00:59:59
1 01h00-01h59 01:00:00 01:59:59
2 02h00-02h59 02:00:00 02:59:59
.. .. .. ..
23 23h00-23h59 23:00:00 23.59.59
我的问题: 如何设置“HOUR_RANGE”和“HOUR_MAX”列的格式以获得预期的输出?
提前感谢大家的帮助
最佳答案
您可以使用:
Select
to_number(to_char(t,'HH24'),'00') AS Hours,
to_char(t,'HH24"h"MI"-"HH24"h59"') AS HOUR_RANGE,
to_char(t,'HH24:MI:SS') AS HOUR_MIN,
to_char(t+1/24-1/(24*3600),'HH24:MI:SS') AS HOUR_MAX
FROM (Select trunc(sysdate) + (level-1)/24 as t
FROM dual
Connect by level <=24 );
<强> Rextester Demo
关于sql - 自动填充 "time_hour"表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46753734/