2017-02-10 5 views
1

私はこのようにいくつかの変数を取得するPHPファイル作成しようとしています:http://plugins.smart-coast.com/reporte_rips.php?q=2016-11-01 * - 2016年11月30日から - * ABC-001エラーのPostgreSQL

PHPファイルを次の(セキュリティのために、私はサーバ接続を避ける)である:

<?php 


    if(!isset($_GET['q'])){ 
     //echo "no se ha recibido nada"; 
     die(); 
    } 

    $datos   = explode('*-*',$_GET['q']); 

    $fecha  = explode ("-", $datos[0]); 
    $fecha_inicio = $fecha[2].'/'.$fecha[1].'/'.$fecha[0]; 
    $fecha  = explode ("-", $datos[1]); 
    $fecha_fin  = $fecha[2].'/'.$fecha[1].'/'.$fecha[0]; 

    $fecha_inicio1 = $datos[0]; 
    $fecha_fin1 = $datos[1]; 
    $cod_empresa = $datos[2]; 
    $no_contrato = $datos[3]; 

    $contador_AF = 0; 
    $contador_US = 0; 
    $contador_AC = 0; 
    $contador_AP = 0; 
    $contador_AU = 0; 
    $contador_AH = 0; 
    $contador_AM = 0; 
    $contador_AT = 0; 



    //Archivo AF____________________________________________________________________________________________________________________________ 
    $query = "Copy (SELECT '524730152501','E.S.E. CENTRO DE SALUD SAN FRANCISCO','NI,900167616-9',a.no_factura,to_char(a.fecha,'dd/mm/yyyy'),'$fecha_inicio','$fecha_fin',b.codigo_entrada,b.nombre,'$no_contrato','','','','','',a.valor_total from hlt_factura a left join hlt_empresa b on a.cod_empresa=b.cod_empresa where a.estado = 'f' AND a.cod_empresa = '$cod_empresa' AND a.cod_facturacion = '2' AND cast(a.fecha as date) BETWEEN cast($fecha_inicio1 as date) AND cast($fecha_fin1 as date)) To '/var/lib/postgresql/AF524730152501.txt' With CSV DELIMITER ',';"; 
    $result = pg_query($db_connection, $query); 

    //Archivo CT 
    $query = "SELECT count(*) as cantidad from hlt_factura a left join hlt_empresa b on a.cod_empresa=b.cod_empresa where a.estado = 'f' AND a.cod_empresa = '$cod_empresa' AND a.cod_facturacion = '2' AND cast(a.fecha as date) BETWEEN cast($fecha_inicio1 as date) AND cast($fecha_fin1 as date);"; 
    $result = pg_query($db_connection, $query); 
    while($r = pg_fetch_array($result)) {  

     $contador_AF = $r['cantidad']; 
    } 

    $fecha_hoy = date("d/m/Y"); 

    $salida = shell_exec('rm CT524730152501.txt'); 
    $archivo = fopen('CT524730152501.txt',"a"); 
    fwrite($archivo,'524270069601,'.$fecha_hoy.',AC524730152501,'.$contador_AC. "\n"); 
    fwrite($archivo,'524270069601,'.$fecha_hoy.',AP524730152501,'.$contador_AP. "\n"); 
    fwrite($archivo,'524270069601,'.$fecha_hoy.',AH524730152501,'.$contador_AH. "\n"); 
    fwrite($archivo,'524270069601,'.$fecha_hoy.',AU524730152501,'.$contador_AU. "\n"); 
    fwrite($archivo,'524270069601,'.$fecha_hoy.',AM524730152501,'.$contador_AM. "\n"); 
    fwrite($archivo,'524270069601,'.$fecha_hoy.',AT524730152501,'.$contador_AT. "\n"); 
    fwrite($archivo,'524270069601,'.$fecha_hoy.',AF524730152501,'.$contador_AF. "\n"); 
    fwrite($archivo,'524270069601,'.$fecha_hoy.',US524730152501,'.$contador_US. "\n"); 
    fclose($archivo); 


    //Se cambia los archivos de direccion 
    $salida = shell_exec('cp /var/lib/postgresql/AC524730152501.txt /var/www/html/pmplugins/workflow/public_html/'); 

    //Se crea el archivo .zip y se adjuntan los archivos de rips 

    $zip = new ZipArchive; 
    $zip->open("Rips524730152501.zip",ZipArchive::CREATE); 
    $zip->addFile("AF524730152501.txt"); 
?> 

しかし、私はこのエラーを取得する:

Warning: pg_query(): Query failed: ERROR: cannot cast type integer to date LINE 1: ...ast(to_char(2016-11-01,'yyyy-mm-dd') as date) AND cast(2016-...^in /var/www/html/pmplugins/workflow/public_html/reporte_rips.php on line 44

答えて

0

あなたは警告で答えを出しました。 cannot cast type integer to date。文字列をcast('2016-...' as date)と書いてください。正常に動作します。 PostgreSQLは2016年11月1日を整数として取り扱いますので、問題になります。間に各日付を追加'...'

+0

今日、私が学んだ新しいヒント、あなたの助けをありがとう。 –

関連する問題