Ver Mensaje Individual
  #4 (permalink)  
Antiguo 12/06/2012, 11:33
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problema con between en procedimiento almacenado

El error no está en las fechas, sino en el "dato" usado en el LIKE. No puedes poner los comodines dentro de la variable.
Código MySQL:
Ver original
  1. DELIMITER $$
  2.  
  3. DROP PROCEDURE IF EXISTS `simae`.`sp_listaReporteTrabajadores`$$
  4.  
  5. CREATE PROCEDURE `sp_listaReporteTrabajadores`(IN fechaInicial DATE, IN fechaFinal DATE, IN dato INT)
  6.     SELECT
  7.         NOMBRE_USUARIO,
  8.         NOMBRE_PRODUCTO,
  9.         REFERENCIA_PRODUCTO,
  10.         f.FECHA,
  11.         SUM(CANTIDAD_VENTA) cantidad
  12.     FROM
  13.         producto p INNER JOIN factura f ON p.COD_PRODUCTO=f.COD_PRODUCTO
  14.         INNER JOIN usuario u ON u.COD_USUARIO=fc.COD_USUARIO
  15.         INNER JOIN factura_cliente fc ON fc.NUMERO_FACTURA=f.NUMERO_FACTURA
  16.     WHERE
  17.         AND f.FECHA BETWEEN fechaInicial AND fechaFinal
  18.         AND NOMBRE_USUARIO LIKE CONCAT('%', dato, '%')
  19.     GROUP BY f.COD_PRODUCTO
  20.     ORDER BY NOMBRE_USUARIO DESC LIMIT 10;
  21. END$$
  22.  
  23. DELIMITER ;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)