Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] error en consulta a la BD

Estas en el tema de error en consulta a la BD en el foro de PHP en Foros del Web. Hola amigos, tengo el siguiente problema, estoy realizando una consulta ala BBDD que esta en mysql para que luego se vuelque a excel lo cual ...
  #1 (permalink)  
Antiguo 11/09/2018, 07:11
Avatar de luissquadrito  
Fecha de Ingreso: agosto-2012
Ubicación: en algun lugar de chile
Mensajes: 119
Antigüedad: 6 años, 1 mes
Puntos: 0
error en consulta a la BD

Hola amigos, tengo el siguiente problema, estoy realizando una consulta ala BBDD que esta en mysql para que luego se vuelque a excel lo cual funciona, el problema sucedió este mes ya que al hacer el filtro de días ejemplo 01/09/2018 al 11/09/2018 me muestra la información del 01/08/2018 al 11/08/2018 y despues de eso del 01/09/2018 cual sera el problema?

esta es la consulta que estoy haciendo en PHP

Código PHP:
$sql="SELECT $variable1 FROM hojat ht LEFT OUTER JOIN `mercancias` AS m ON ht.`codigo` = m.`codigo` WHERE fechaingreso BETWEEN '$desde ' AND '$hasta ' "
espero que me puedan ayudar, ya que esta ocacionando problemas al hacer la consulta y mi jefe me esta presionando...
  #2 (permalink)  
Antiguo 11/09/2018, 08:42
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.308
Antigüedad: 12 años, 2 meses
Puntos: 760
Respuesta: error en consulta a la BD

ejecutaste la consulta directamente desde la consola de mysql? no entiendo cual es tu problematica como que muestraun rango y despues otro?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 11/09/2018, 13:06
Avatar de luissquadrito  
Fecha de Ingreso: agosto-2012
Ubicación: en algun lugar de chile
Mensajes: 119
Antigüedad: 6 años, 1 mes
Puntos: 0
Respuesta: error en consulta a la BD

si la ejecute directamente en la consola mysql y el error es el siguiente,

genero la consulta ejemplo del 01/09/2018 al 11/09/2018 pero los primeros resultados son los del 01/08/2018 al 11/08/2018 y después de eso muestra los datos que estaba consultando.

cual podrá ser el error?
  #4 (permalink)  
Antiguo 11/09/2018, 13:12
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.308
Antigüedad: 12 años, 2 meses
Puntos: 760
Respuesta: error en consulta a la BD

el campo fechaingreso en que tabla esta? aqui al parecer tu query esta trayendo informacion de mas porque estas haciendo un left outer join(estas haciendo un producto cartesiano con la informacion) te recomendaria usar inner join en lugar del outer join
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 11/09/2018, 13:23
Avatar de luissquadrito  
Fecha de Ingreso: agosto-2012
Ubicación: en algun lugar de chile
Mensajes: 119
Antigüedad: 6 años, 1 mes
Puntos: 0
Respuesta: error en consulta a la BD

el campo fechaingreso esta en la tabla hojat, cambie el left outer join por inner join pero me sigue mostrando la información de la misma forma anterior.
  #6 (permalink)  
Antiguo 11/09/2018, 13:38
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.308
Antigüedad: 12 años, 2 meses
Puntos: 760
Respuesta: error en consulta a la BD

y cual es el formato de fecha que tienes en tu servidor?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 11/09/2018, 13:45
Avatar de luissquadrito  
Fecha de Ingreso: agosto-2012
Ubicación: en algun lugar de chile
Mensajes: 119
Antigüedad: 6 años, 1 mes
Puntos: 0
Respuesta: error en consulta a la BD

el formato es dd-mm-aaaa, la consulta la haga con guion o slash sigue mostrando la informacion mal
  #8 (permalink)  
Antiguo 11/09/2018, 14:06
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.308
Antigüedad: 12 años, 2 meses
Puntos: 760
Respuesta: error en consulta a la BD

Nada mas consulta la tabla hojat con el rango de fechas y ve que valores te regresa, ahora en lugar de between prueba con esto

Código MySQL:
Ver original
  1. where fecha >= fecha1 and fecha<=fecha2
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 11/09/2018, 14:13
Avatar de luissquadrito  
Fecha de Ingreso: agosto-2012
Ubicación: en algun lugar de chile
Mensajes: 119
Antigüedad: 6 años, 1 mes
Puntos: 0
Respuesta: error en consulta a la BD

hice la consulta solo a la table hojat con los parametros que me dijiste sacando el between, pero el error persiste.....

  #10 (permalink)  
Antiguo 11/09/2018, 15:19
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.308
Antigüedad: 12 años, 2 meses
Puntos: 760
Respuesta: error en consulta a la BD

entonces los datos estan mal, la columna es de tipo date?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #11 (permalink)  
Antiguo 12/09/2018, 05:11
Avatar de luissquadrito  
Fecha de Ingreso: agosto-2012
Ubicación: en algun lugar de chile
Mensajes: 119
Antigüedad: 6 años, 1 mes
Puntos: 0
Respuesta: error en consulta a la BD

no es un varchar, sera ese el problema?
  #12 (permalink)  
Antiguo 12/09/2018, 07:35
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.308
Antigüedad: 12 años, 2 meses
Puntos: 760
Respuesta: error en consulta a la BD

claro ese es el problema, no es lo mismo comparar fechas que comparar cadenas de caracteres, es por eso que no te este regresando los datos bien con el between
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #13 (permalink)  
Antiguo 12/09/2018, 18:23
Avatar de luissquadrito  
Fecha de Ingreso: agosto-2012
Ubicación: en algun lugar de chile
Mensajes: 119
Antigüedad: 6 años, 1 mes
Puntos: 0
Respuesta: error en consulta a la BD

amigo y como podria modificar los datos ya ingresados sin perder la informacion al cambiar la variable a DATE?
  #14 (permalink)  
Antiguo 12/09/2018, 20:29
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.308
Antigüedad: 12 años, 2 meses
Puntos: 760
Respuesta: error en consulta a la BD

podrias hacer un alter a la tabla y cambiar el tipo de dato, si los datos estan en un formato correcto entonces no habra problema.

seria algo como esto:

Código MySQL:
Ver original
  1. alter table mi_tabla alter column fecha date
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #15 (permalink)  
Antiguo 13/09/2018, 05:50
Avatar de luissquadrito  
Fecha de Ingreso: agosto-2012
Ubicación: en algun lugar de chile
Mensajes: 119
Antigüedad: 6 años, 1 mes
Puntos: 0
Respuesta: error en consulta a la BD

lo que pasa es que los datos están en formato dd-mm-aaaa, realice el cambio pero las fechas se borraron por eso te preguntaba si había alguna forma de cambiar los datos antes de realizar el cambio a date.
  #16 (permalink)  
Antiguo 13/09/2018, 08:34
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.308
Antigüedad: 12 años, 2 meses
Puntos: 760
Respuesta: error en consulta a la BD

Cita:
Iniciado por luissquadrito Ver Mensaje
lo que pasa es que los datos están en formato dd-mm-aaaa, realice el cambio pero las fechas se borraron por eso te preguntaba si había alguna forma de cambiar los datos antes de realizar el cambio a date.
como que las fechas se borraron? entonces dd-mm-aaaa no es el formato de fecha de tu servidor?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #17 (permalink)  
Antiguo 13/09/2018, 08:51
 
Fecha de Ingreso: febrero-2008
Mensajes: 112
Antigüedad: 10 años, 7 meses
Puntos: 4
Respuesta: error en consulta a la BD

mi recomendación

Crea un campo nuevo de tipo date por fejemplo fechanueva

en php o en lo que suelas programar recorre todos los registros uno por uno y convierte tu fecha actual al formato yyyy-mm-dd (año - mes -dia)

Una vez que se haya realizado ese paso ya podras borrar tu columna vrchar de fecha y utilizar el nuevo formato fechanueva

Finalmente renombreas el fechanueva por fecha. (recuerda de trabajr en formato de base de datos, yyyy-mm-dd
__________________
Estrella 923
  #18 (permalink)  
Antiguo 13/09/2018, 08:52
Avatar de luissquadrito  
Fecha de Ingreso: agosto-2012
Ubicación: en algun lugar de chile
Mensajes: 119
Antigüedad: 6 años, 1 mes
Puntos: 0
Respuesta: error en consulta a la BD

el formato de las fechas que están en el servidor son dd-mm-aaaa pero cuando pase a date el campo quedaron 0000-00-00 por suerte había realizado un respaldo antes por lo que pude restaurar la BBDD.

entonces mi nueva consulta es si existe alguna secuencia sql la cual me transforme mi fecha actual que esta en dd-mm-aaaa y me la pase a aaaa-mm-dd antes de transformar el campo a date?
  #19 (permalink)  
Antiguo 13/09/2018, 09:47
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.308
Antigüedad: 12 años, 2 meses
Puntos: 760
Respuesta: error en consulta a la BD

como no usas campos date tendras que formatear tu consulta, recortando la cadena y acomodandola como lo necesitas, es por eso que es bueno tener desde un principio bien definidos los tipos de datos
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #20 (permalink)  
Antiguo 14/09/2018, 07:17
Avatar de luissquadrito  
Fecha de Ingreso: agosto-2012
Ubicación: en algun lugar de chile
Mensajes: 119
Antigüedad: 6 años, 1 mes
Puntos: 0
Respuesta: error en consulta a la BD

Cita:
Iniciado por estrella_de_Galicia Ver Mensaje
mi recomendación

Crea un campo nuevo de tipo date por fejemplo fechanueva

en php o en lo que suelas programar recorre todos los registros uno por uno y convierte tu fecha actual al formato yyyy-mm-dd (año - mes -dia)

Una vez que se haya realizado ese paso ya podras borrar tu columna vrchar de fecha y utilizar el nuevo formato fechanueva

Finalmente renombreas el fechanueva por fecha. (recuerda de trabajr en formato de base de datos, yyyy-mm-dd
Muchas Gracias a todos los que me ayudaron a resolver este problema ya lo solucione gracias a la ayuda que cite con el siguiente codigo, el cual coloco por si a alguien mas le pasa lo mismo

Código PHP:
include("conexion_1.php");
header("content-Type: Text/Html;Charset=utf-8");

$resultado mysql_query("SELECT * FROM hojat");
while(
$row mysql_fetch_array($resultado)){
    
$numero1 $row["id"];
    
$fecha $row["fechaingreso"];
  
    
$fecha2 date('Y-m-d'strtotime($fecha));
  
  
  
  
mysql_select_db("hojat");
$sSql6="Update hojat Set fechaingreso='".$fecha2."' where id='".$numero1."'  ";
mysql_query($sSql6);
  

saludos
  #21 (permalink)  
Antiguo 17/09/2018, 07:14
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.304
Antigüedad: 10 años, 10 meses
Puntos: 2646
Respuesta: error en consulta a la BD

Solución propuesta no aplica BBDD.

Movido al foro correcto
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)



La zona horaria es GMT -6. Ahora son las 02:11.