Plsql 如何在PL/SQL中向timestamp变量添加分钟数?
我正在尝试向PL/SQL中的时间戳变量添加30分钟,如下所示:Plsql 如何在PL/SQL中向timestamp变量添加分钟数?,plsql,timestamp,Plsql,Timestamp,我正在尝试向PL/SQL中的时间戳变量添加30分钟,如下所示: DECLARE l_start_timestamp timestamp; l_end_timestamp timestamp; rnk number; BEGIN l_start_timestamp := to_timestamp('&start_time', 'dd-mm-yyyy hh24:mi:ss') + INTERVAL '00:30' HOUR TO MI
DECLARE
l_start_timestamp timestamp;
l_end_timestamp timestamp;
rnk number;
BEGIN
l_start_timestamp := to_timestamp('&start_time', 'dd-mm-yyyy hh24:mi:ss') + INTERVAL '00:30' HOUR TO MINUTE;
l_end_timestamp := to_timestamp('&end_time', 'dd-mm-yyyy hh24:mi:ss') + INTERVAL '00:30' HOUR TO MINUTE;
.........................
..........................
END;
/
获取以下错误:
Enter value for start_time: 25-03-2016 00:00:00
old 23: l_start_timestamp := to_timestamp('&start_time', 'dd-mm-yyyy hh24:mi:ss') + INTERVAL '00:30' HOUR TO MINUTE;
new 23: l_start_timestamp := to_timestamp('25-03-2016 00:00:00', 'dd-mm-yyyy hh24:mi:ss') + INTERVAL '00:30' HOUR TO MINUTE;
Enter value for end_time: 26-03-2016 00:00:00
old 24: l_end_timestamp := to_timestamp('&end_time', 'dd-mm-yyyy hh24:mi:ss') + INTERVAL '00:30' HOUR TO MINUTE;
new 24: l_end_timestamp := to_timestamp('26-03-2016 00:00:00', 'dd-mm-yyyy hh24:mi:ss') + INTERVAL '00:30' HOUR TO MINUTE;
l_start_timestamp := to_timestamp('25-03-2016 00:00:00', 'dd-mm-yyyy hh24:mi:ss') + INTERVAL '00:30' HOUR TO MINUTE;
*
ERROR at line 23:
ORA-06550: line 23, column 86:
PLS-00166: bad format for date, time, timestamp or interval literal
请帮我怎么做
提前谢谢 尝试添加分钟,而不是将小时转换为分钟
DECLARE
l_start_timestamp timestamp;
l_end_timestamp timestamp;
rnk number;
BEGIN
l_start_timestamp := to_timestamp('&start_time', 'dd-mm-yyyy hh24:mi:ss') + INTERVAL '30' MINUTE;
l_end_timestamp := to_timestamp('&end_time', 'dd-mm-yyyy hh24:mi:ss') + INTERVAL '30' MINUTE;
END;
尝试只添加分钟,而不是将小时转换为分钟
DECLARE
l_start_timestamp timestamp;
l_end_timestamp timestamp;
rnk number;
BEGIN
l_start_timestamp := to_timestamp('&start_time', 'dd-mm-yyyy hh24:mi:ss') + INTERVAL '30' MINUTE;
l_end_timestamp := to_timestamp('&end_time', 'dd-mm-yyyy hh24:mi:ss') + INTERVAL '30' MINUTE;
END;
我认为您遇到了Oracle错误(至少在11gR2中) interval语句完全有效:
SQL> select date'2016-03-29' + interval '01:30' hour to minute from dual;
DATE'2016-03-29'+IN
-------------------
2016-03-29 01:30:00
但是,它在PL/SQL上下文事件中不起作用,它应该:
declare
v_date date := date'2016-03-29' + interval '01:30' hour to minute;
begin
dbms_output.put_line(v_date);
end;
/
ERROR at line 2:
ORA-06550: line 2, column 37:
PLS-00166: bad format for date, time, timestamp or interval literal
可能的解决办法:
declare
v_date date := date'2016-03-29' + interval '1' hour + interval '30' minute;
begin
dbms_output.put_line(v_date);
end;
/
2016-03-29 01:30:00
declare
v_date date;
begin
select date'2016-03-29' + interval '01:30' hour to minute
into v_date
from dual;
dbms_output.put_line(v_date);
end;
/
2016-03-29 01:30:00
我认为您遇到了Oracle错误(至少在11gR2中) interval语句完全有效:
SQL> select date'2016-03-29' + interval '01:30' hour to minute from dual;
DATE'2016-03-29'+IN
-------------------
2016-03-29 01:30:00
但是,它在PL/SQL上下文事件中不起作用,它应该:
declare
v_date date := date'2016-03-29' + interval '01:30' hour to minute;
begin
dbms_output.put_line(v_date);
end;
/
ERROR at line 2:
ORA-06550: line 2, column 37:
PLS-00166: bad format for date, time, timestamp or interval literal
可能的解决办法:
declare
v_date date := date'2016-03-29' + interval '1' hour + interval '30' minute;
begin
dbms_output.put_line(v_date);
end;
/
2016-03-29 01:30:00
declare
v_date date;
begin
select date'2016-03-29' + interval '01:30' hour to minute
into v_date
from dual;
dbms_output.put_line(v_date);
end;
/
2016-03-29 01:30:00