php - postgresql 类型错误

标签 php postgresql date types

我正在尝试制作一个以这种方式获取多个变量的 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");
?>

但是我得到这个错误:

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

最佳答案

您已经给出了警告中的答案。 无法将类型整数转换为日期。将日期写为字符串 cast('2016-...' as date) 它应该可以正常工作。 PostgreSQL 将 2016-11-01 视为整数,所以这是问题所在。在 '...'

之间添加每个日期

关于php - postgresql 类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42169030/

相关文章:

date - 在邮件合并中插入动态日期字段

PHP DOM文档 : Get attribute value from id

postgresql - 以适用于 JavaSE 的 JavaEE 友好方式获取计时器(用于 JDBC 驱动程序)

sql - Heroku - SQL 查询在 localhost 和 heroku 上返回不同的结果

macos - 在 Mac OS X shell 脚本中从开始日期循环到结束日期

date - NVD3 线加条形图 X 轴刻度错误对齐

shell_exec 中的 PHP sudo

php - 从 MySQL 迁移到数据库的本地单文件实现(闪存和 AS3)的更轻松的方法

php - CodeIgniter 3 重定向功能不起作用

sql - 将日期转换为工作日然后关联并求和