在Oracle/PLSQL中增加日期时间时出错
在这里,我使用从StartDateTime到EndDatetime的循环,并在每次迭代中增加1小时。一切都在循环中工作。但问题在于插入查询。请检查插入查询在Oracle/PLSQL中增加日期时间时出错,oracle,plsql,oracle11g,oracle12c,Oracle,Plsql,Oracle11g,Oracle12c,在这里,我使用从StartDateTime到EndDatetime的循环,并在每次迭代中增加1小时。一切都在循环中工作。但问题在于插入查询。请检查插入查询 declare StartDateTime TIMESTAMP :=to_date( '2017-01-01 00:00:00','yyyy-mm-dd hh24:mi:ss'); EndDateTime TIMESTAMP :=to_date( '2017-12-31 00:00:00','yyyy-mm-dd hh
declare
StartDateTime TIMESTAMP :=to_date( '2017-01-01 00:00:00','yyyy-mm-dd
hh24:mi:ss');
EndDateTime TIMESTAMP :=to_date( '2017-12-31 00:00:00','yyyy-mm-dd
hh24:mi:ss');
dateti TIMESTAMP;
dateti2 TIMESTAMP;
StartDateTime1 TIMESTAMP;
sub INTEGER;
semester Number;
begin
sub:=( CAST( EndDateTime AS DATE ) - CAST( StartDateTime AS DATE ) ) ;
FOR i IN 0 .. 1
LOOP
StartDateTime1:=StartDateTime+i;
for idx in 0..2 loop
dateti:=to_date(StartDateTime1+(idx/24.0),'yyyy-mm-dd hh24:mi:ss');
dateti2:=to_date(StartDateTime1+((idx+1)/24.0)+ interval '-1' second,'yyyy-
mm-dd hh24:mi:ss');
case
when to_number(to_char(dateti ,'Q'))>6 then semester:=to_number(2);
else semester:=to_number(1);
end case;
问题从插入查询中的此处开始。它表示找到了非数字字符。DateSlotStart和DateSlotEnd数据类型为TimeStrap。请查看图像并建议我应该更改什么
请也检查一下这个
问题在于,您试图将
时间戳
转换为不需要的日期。当您需要将其转换为日期时,最好使用CAST
。用这个替换你的插件。它应该会起作用
INSERT INTO dimdate1 (
dateslotstart,
dateslotend,
"Date",
slotname,
monthname,
monthnumberofyear,
quarter,
year,
semester
) VALUES (
dateti,
dateti2,
CAST (dateti AS DATE),
TO_CHAR(dateti,'hh24:mi')
|| ' To '
|| TO_CHAR(dateti2,'hh24:mi'),
TO_CHAR(dateti,'Month'),
to_number(TO_CHAR(dateti,'mm') ),
to_number(TO_CHAR(dateti,'Q') ),
to_number(TO_CHAR(dateti,'YYYY') ),
semester
);
提供用于创建表的DDL
DimDate1
我添加了DDL@KaushikNayakBy DDL,我指的是create table DimDate1语句
。运行此查询并让我知道输出<代码>选择dbms_元数据。从DUAL获取_DDL('TABLE','DIMDATE1')代码>[Err]ORA-31603:在架构“MY_ERP_LOCAL_DB”ORA-06512:在“SYS.DBMS_METADATA”中找不到类型表的对象“DIMDATE1”:第1546行ORA-06512:在“SYS.DBMS_METADATA”中,第1583行ORA-06512:在“SYS.DBMS_METADATA”中,第1901行ORA-06512:在“SYS.DBMS_METADATA”中,第2792行ORA-06512:在“SYS.DBMS_METADATA”中,第4333行ORA-06512:在架构“MY_ERP_LOCAL_DB”中找不到第1行。我现在可以做什么?我在“[Err]ORA-20000:ORU-10027:缓冲区溢出,限制20000字节”中遇到错误。它与插入或转换无关。您必须检查您是否正在使用PL/SQL代码运行一个无限循环
INSERT INTO dimdate1 (
dateslotstart,
dateslotend,
"Date",
slotname,
monthname,
monthnumberofyear,
quarter,
year,
semester
) VALUES (
dateti,
dateti2,
CAST (dateti AS DATE),
TO_CHAR(dateti,'hh24:mi')
|| ' To '
|| TO_CHAR(dateti2,'hh24:mi'),
TO_CHAR(dateti,'Month'),
to_number(TO_CHAR(dateti,'mm') ),
to_number(TO_CHAR(dateti,'Q') ),
to_number(TO_CHAR(dateti,'YYYY') ),
semester
);