Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PL/SQL-无法使用to_date()将字符串转换为所需的日期格式_Sql_Oracle_Plsql - Fatal编程技术网

PL/SQL-无法使用to_date()将字符串转换为所需的日期格式

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

我有一个类似“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_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语句导致了这里的问题。可能还有其他问题。