在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;
但正如其他人所说,您通常不希望将时间与日期信息分开存储。
我制作这个程序是为了将一天中的所有时间(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;
但正如其他人所说,您通常不希望将时间与日期信息分开存储。