PL/SQL-无法使用to_date()将字符串转换为所需的日期格式
我有一个类似“01-JAN-15 13:05:01”的字符串。我使用了_date()函数将字符串转换为日期格式,并将其存储到日期字段中。但是,存储的时间值不正确,即“01/01/2015 04:12:43 PM”。我曾经使用_char()函数来显示转换日期的值,但是返回的值没有任何问题 输入(字符串):01-JAN-15 13:05:01 期望输出(日期):01/01/15 01:05:01 PM 实际输出(日期):01/01/15 04:12:43 PM 转换代码:PL/SQL-无法使用to_date()将字符串转换为所需的日期格式,sql,oracle,plsql,Sql,Oracle,Plsql,我有一个类似“01-JAN-15 13:05:01”的字符串。我使用了_date()函数将字符串转换为日期格式,并将其存储到日期字段中。但是,存储的时间值不正确,即“01/01/2015 04:12:43 PM”。我曾经使用_char()函数来显示转换日期的值,但是返回的值没有任何问题 输入(字符串):01-JAN-15 13:05:01 期望输出(日期):01/01/15 01:05:01 PM 实际输出(日期):01/01/15 04:12:43 PM 转换代码: select to_dat
select to_date('01-JAN-15 13:05:01', 'dd-mon-yy hh24:mi:ss') into result_date from dual;
whenever sqlerror exit 99 ROLLBACK;
set echo on;
set verify on;
set serverout on;
declare
result_date date;
begin
select to_date('01-JAN-15 13:05:01', 'dd-mon-yy hh24:mi:ss') into result_date from dual;
insert into temp_table values (result_date);
commit;
end;
到_char()
更新:
select to_date('01-JAN-15 13:05:01', 'dd-mon-yy hh24:mi:ss') into result_date from dual;
whenever sqlerror exit 99 ROLLBACK;
set echo on;
set verify on;
set serverout on;
declare
result_date date;
begin
select to_date('01-JAN-15 13:05:01', 'dd-mon-yy hh24:mi:ss') into result_date from dual;
insert into temp_table values (result_date);
commit;
end;
上面的代码不应该给出问题。我运行了下面的代码片段,并给出了预期的结果。如果您仅使用上述代码,请再次检查一次
DECLARE
result_date DATE;
BEGIN
select to_date('01-JAN-15 13:05:01', 'dd-mon-yy hh24:mi:ss') INTO result_date from dual;
DBMS_OUTPUT.PUT_LINE(to_char(result_date, 'dd/mm/yyyy hh:mi:ss AM'));
END;
那么,您是否有一个小但完整的PL/SQL块,我可以运行它来重现您的问题?谢谢您的回复。很抱歉,我没有完整的执行块,但是@Naveen Chappa下面的回答是类似的。那么听起来像是其他东西,在这个问题中没有提到,改变了你的数据。如果没有我们可以复制的东西,我们就不能为你做什么。我只是更新了代码。问题发生在insert语句中。temp表的错误和结构是什么?谢谢您的回复。事实上,当结果_日期存储到数据库,而不是dbms_output.put_行时,问题就发生了。dbms_output.put_行输出的值是正确的,但数据库中的时间值已更改。我可以看到该代码吗?也许第三只眼睛能找到根本原因。我刚刚更新了代码。问题发生在insert语句。@CodeEater我不认为insert语句导致了这里的问题。可能还有其他问题。