在oracle数据库中将数字保存为01而不是1

Saving a number as 01 instead of 1 in oracle database

我制作这个程序是为了将一天中的所有时间(24 小时制)放在 table 中。

create or replace
procedure fill_time as

l_hour number(2) :=0;
l_minute number(2):=0;
l_hourminute varchar2(5);

BEGIN


while l_hour<=23 loop
  while l_minute<=59 loop
l_hourminute :=to_char(l_hour)||':'||to_char(l_minute);
 insert into times(hour,minute, hourminute) values(l_hour, l_minute,l_hourminute);
l_minute:=l_minute+1;
 END LOOP; 
l_minute:=0;
l_hour:=l_hour+1;
END LOOP;
 END;

现在它工作正常,除了时间以外的所有时间都存储为 0:0。我怎样才能确保它存储为 00:00?

改变

l_hourminute :=to_char(l_hour)||':'||to_char(l_minute);

收件人:

l_hourminute :=TRIM(to_char(l_hour, '09'))||':'||TRIM(to_char(l_minute, '09'));

除了需要将 00:00 到 23:59 的小时数插入 table 之外(为什么?!请详细说明您的要求,我很好奇关于它!),您不需要将此作为一个过程来执行 - 您可以在单个插入语句中轻松地执行此操作:

insert into times (hour,minute, hourminute)
select to_char(trunc(sysdate) + (level - 1)/(24*60), 'hh24') hr,
       to_char(trunc(sysdate) + (level - 1)/(24*60), 'mi') min,
       to_char(trunc(sysdate) + (level - 1)/(24*60), 'hh24:mi') hourminute
from   dual
connect by level <= 24*60;

但正如其他人所说,您通常不希望将时间与日期信息分开存储。