Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] Consulta Fecha Mysql

Estas en el tema de Consulta Fecha Mysql en el foro de Mysql en Foros del Web. Buenas tardes, Tengo un problema con la siguiente consulta mysql que paso previamente mediante formulario por GET: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original SELECT * ...
  #1 (permalink)  
Antiguo 03/01/2015, 06:59
 
Fecha de Ingreso: septiembre-2014
Mensajes: 5
Antigüedad: 9 años, 7 meses
Puntos: 0
Consulta Fecha Mysql

Buenas tardes,
Tengo un problema con la siguiente consulta mysql que paso previamente mediante formulario por GET:

Código MySQL:
Ver original
  1. SELECT * FROM tblevento
  2. WHERE tblevento.intProvincia = %s AND tblevento.intDeporte = %s AND tblevento.strFecha = '".$varFecha_Recordset1."'
  3. ORDER BY strHora ASC
Cita:
Editado: Código de programación no permitido en foros de Bases de Datos.
Leer las normas del foro, por favor.
strFecha es un campo varchar de la siguiente forma (dd-mm-yyyy)
un echo de la consulta sería algo así:
Código MySQL:
Ver original
  1. SELECT * FROM tblevento
  2. WHERE tblevento.intProvincia = 19 AND tblevento.intDeporte = 1 AND tblevento.strFecha = '31-01-2015'
  3. ORDER BY strHora ASC

El problema es que solo coge el primer valor de la fecha, en este caso el 31 y omite el mes y el año.

Si alguien me pudiera ayudar estaría muy agradecido.
  #2 (permalink)  
Antiguo 03/01/2015, 07:06
Avatar de 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: Consulta Fecha Mysql

En primer lugar, usar un VARCHAR para almacenar fechas, es una enorme metida de pata. No se hace, para eso existen los campos DATE, DATETIME y TIMESTAMP; y no se hace porque usar campos VARCHAR los hace proclives a errores de consultas, y fuerza a usar funciones de conversión que terminan impactando negativamente en la performance.

¿Se entiende?

Segundo:
Cita:
El problema es que solo coge el primer valor de la fecha, en este caso el 31 y omite el mes y el año.
Eso parece un problema de datos, más que de consulta, pero sin ver los datos reales de la tabla, no hay mucho más para decir.
En cualquier caso, deberías probar haciendolo así:
Código MySQL:
Ver original
  1. SELECT * FROM tblevento
  2. WHERE intProvincia = 19
  3.     AND intDeporte = 1
  4.     AND STR_TO_DATE(strFecha,'%d-%m-%Y') = STR_TO_DATE('31-01-2015','%d-%m-%Y')
  5. ORDER BY strHora ASC

Si eso falla, tienes realmente un problema de datos...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 03/01/2015, 07:37
 
Fecha de Ingreso: septiembre-2014
Mensajes: 5
Antigüedad: 9 años, 7 meses
Puntos: 0
Respuesta: Consulta Fecha Mysql

Gracias por tu rápida respuesta,

He echo la consulta tal y como me has indicado y ahora no me arroja ningún resultado.
También he cambiado el varchar de la tabla por date.

La estructura de la tabla es:

Código MySQL:
Ver original
  1. SET FOREIGN_KEY_CHECKS=0;
  2. -- ----------------------------
  3. -- Table structure for tblevento
  4. -- ----------------------------
  5. DROP TABLE IF EXISTS `tblevento`;
  6. CREATE TABLE `tblevento` (
  7.   `idEvento` int(11) NOT NULL AUTO_INCREMENT,
  8.   `intLugar` int(11) DEFAULT NULL,
  9.   `intJugadores` int(11) DEFAULT NULL,
  10.   `intNivel` int(11) DEFAULT NULL,
  11.   `intUsuario` int(11) DEFAULT NULL,
  12.   `dbPrecio` double(11,2) DEFAULT NULL,
  13.   `intProvincia` int(11) DEFAULT NULL,
  14.   `intDeporte` int(11) DEFAULT NULL,
  15.   `strFecha` date DEFAULT NULL,
  16.   PRIMARY KEY (`idEvento`)
  17. ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci;
  18.  
  19. -- ----------------------------
  20. -- Records
  21. -- ----------------------------
  22. INSERT INTO `tblevento` VALUES ('1', '655', '8', '1', '7', '0.00', '19', '1', '2015-01-31');

y la consulta que he realizado es:

Código MySQL:
Ver original
  1. SELECT * FROM tblevento
  2. WHERE intProvincia = 19
  3.     AND intDeporte = 1
  4.     AND STR_TO_DATE(strFecha,'%Y-%m-%d') = STR_TO_DATE('2015-01-31','%Y-%m-%d')
  5. ORDER BY strHora ASC

No se que es lo que puede pasar, gracias de antemano

Última edición por gnzsoloyo; 03/01/2015 a las 08:49 Razón: MUY MAL etiquetado... Usar Highlight "SQL" o "MySQL".
  #4 (permalink)  
Antiguo 03/01/2015, 08:55
Avatar de 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: Consulta Fecha Mysql

Cita:
No se que es lo que puede pasar
Pues simplemente que debe estar devolviendote un error de ejecución, pero como ni siquiera verificas eso, jamas te enteras...

Estás invocando un campo que no existe en:
Código MySQL:
Ver original
  1. ...
  2. ORDER BY strHora ASC

DEbe estar retornando este mensaje:
Cita:
Error Code: 1054. Unknown column 'strHora' in 'order clause'
pero como dije, ni te estas tomando el tiempo de verificar si la ejecución falla, y recuperar los mensajes de error de MySQL, por lo que no te enteras.

Consulta en el foro de PHP para que te expliquen como manejar los errores devueltos por la base de datos (programación es tema OFF TOPIC en este foro).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: campo, fecha, select, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:59.