【问题标题】:Error with types postgresqlpostgresql 类型错误
【发布时间】:2017-06-29 08:54:21
【问题描述】:

我正在尝试制作一个以这种方式获取多个变量的 php 文件:http://plugins.smart-coast.com/reporte_rips.php?q=2016-11-01*-2016-11-30-107-*abc- 001

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");
?>

但我收到此错误:

警告:pg_query():查询失败:错误:无法将类型整数转换为日期第 1 行:...ast(to_char(2016-11-01,'yyyy-mm-dd') as date) AND cast( 2016-... ^ 在 /var/www/html/pmplugins/workflow/public_html/reporte_rips.php 第 44 行

【问题讨论】:

    标签: php postgresql date types


    【解决方案1】:

    你已经在警告中给出了答案。 cannot cast type integer to date。将日期写为字符串cast('2016-...' as date),它应该可以正常工作。 PostgreSQL 将 2016-11-01 视为整数,所以这就是问题所在。在'...'之间添加每个日期

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-16
      • 2013-04-05
      • 2018-10-02
      • 1970-01-01
      • 2012-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多