使用 PHP 在 Oracle SP 中插入日期


Inserting a date in a Oracle SP using PHP

>我有以下内容:

一个日期,但作为字符串(作为参数发送),称为$fecha,其值为

2016-03-21 10:59:00

和甲骨文 SP:

$proc = oci_parse($this->db->conn_id, "BEGIN 
                                                BD_SGMR.mr_grabar_marca_carro(
                                                        :p_fecha_marca                                                        
                                                        :estado,
                                                        :mensaje
                                                );
                                            END;");
    oci_bind_by_name($proc,"p_fecha_marca",$fecha);        
    oci_bind_by_name($proc,"estado",$estado,-1,OCI_B_INT ); 
    oci_bind_by_name($proc,"mensaje",$mensaje,200,SQLT_CHR );
    oci_execute($proc);

执行该过程时,我有下一个错误:

遇到 PHP 错误

严重性:警告

消息:oci_execute():ORA-01830:la Máscara de formato de fecha termina antes de convertir toda la cadena de entrada ORA-06512: en línea 2

文件名: 马卡卡罗/MarcarCarro_model.php

行号:172

我还没有找到解决方案。

感谢您的帮助

您传递给 Oracle 的日期采用与 Oracle 预期的格式

不同的格式(Oracle 预期的格式取决于客户端的配置)。您可以使用临时变量显式指定要传递的格式,如下所示。

declare 
  input_date date;
BEGIN
 input_date:=to_datE(:p_fecha_marca,'DD/MM/YYYY hh24:mi:ss'); 
 BD_SGMR.mr_grabar_marca_carro(
                                                        input_date,                                                       
                                                        :estado,
                                                        :mensaje
                                                );
 END;

要更改 oracle 期望的格式,您可以发出以下语句:

ALTER SESSION SET NLS_DATE_FORMAT = 'DD/MM/YYYY hh24:mi:ss'