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

Obtener registros de una fecha en particular

Estas en el tema de Obtener registros de una fecha en particular en el foro de Mysql en Foros del Web. Cual sería la forma más simple de obtener las coincidencias considerando que tengo los valores "mes" y "año" (como cadenas) y que los registros guardan ...
  #1 (permalink)  
Antiguo 24/05/2011, 05:34
 
Fecha de Ingreso: octubre-2003
Mensajes: 540
Antigüedad: 20 años, 6 meses
Puntos: 1
Obtener registros de una fecha en particular

Cual sería la forma más simple de obtener las coincidencias considerando que tengo los valores "mes" y "año" (como cadenas) y que los registros guardan su fecha como timestamp?

Estuve probando con STR_TO_DATE pero no me devuelve resutados.
  #2 (permalink)  
Antiguo 24/05/2011, 06: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, 4 meses
Puntos: 2658
Respuesta: Obtener registros de una fecha en particular

Porque STR_TO_DATE() transforma una fecha en una cadena, en base a un formato determinado.
Lo que te conviene usar es simplemente YEAR() y MONTH sobre la columna de la tabla y compararlos con los valores ingresados, pero procura hacerlo de modo que los valores queden com onúmeros uy no como cadenas (todos los lenguajes tienen funciones para parseralos como tales).
O sea, algo así:
Código MySQL:
Ver original
  1. FROM tabla
  2. WHERE YEAR(fechaTS) = 2011 AND MONTH(fechaTS) = 5;
La idea de que no uses comparaciones de cadena es para no obligar a MySQL a realizar conversiones implícitas de tipo de dato.
__________________
¿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 24/05/2011, 07:21
 
Fecha de Ingreso: octubre-2003
Mensajes: 540
Antigüedad: 20 años, 6 meses
Puntos: 1
Respuesta: Obtener registros de una fecha en particular

Gracias gnzsoloyo, la consulta me sigue devolviendo cero resultados.
El campo donde se almacena la fecha es de tipo int y lo relleno con time() de php al insertar el registro...es por eso que no funciona?
  #4 (permalink)  
Antiguo 24/05/2011, 07:40
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, 4 meses
Puntos: 2658
Respuesta: Obtener registros de una fecha en particular

Es muy probable, por varias razones (rango de representación, por ejemplo). Adem´´as, si ya existe un tipo de columna TIMESTAMP, ¿por qué usaste un INT, y encima con signo?
Lo que te conviene es usar un DATE o DATETIME y usar date_format() para meterle lafecha correctamente en el formato "aaaa-mm-dd", o bien usar funciones de MySQL en el INSERT para que tome la fecha que PHP le procese.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 24/05/2011, 08:13
 
Fecha de Ingreso: octubre-2003
Mensajes: 540
Antigüedad: 20 años, 6 meses
Puntos: 1
Respuesta: Obtener registros de una fecha en particular

Bueno tu sabes, es de esas cosas que lo haces de la forma en que te sale la 1era vez, y aunque no sepas si es lo optimo si te funciona lo mantienes.
Alguna otra idea que pudiera probar para obtener los datos sin modificar la estructura de la tabla?

Gracias.
  #6 (permalink)  
Antiguo 24/05/2011, 08:29
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, 4 meses
Puntos: 2658
Respuesta: Obtener registros de una fecha en particular

Cita:
Alguna otra idea que pudiera probar para obtener los datos sin modificar la estructura de la tabla?
No debería haber problemas, si el campo fue definido como INT y no INT UNSIGNED, ya su límite de representación es de 2147483647, lo que está por encima del mayor valor que puedes haber cargado con la función time().
Ahora bien, lo que tienes allí es un entero que representa una fecha UNIXTIME, por lo cual lo primero que hay que hacer, para recuperar los datos necesarios, es reconstruir la fecha insertada, y con ello obtener mes y año:
Código MySQL:
Ver original
  1. FROM tabla
  2.     YEAR(FROM_UNIXTIME(fechaTS)) = 2011 AND
  3.     MONTH(FROM_UNIXTIME(fechaTS)) = 5;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 24/05/2011, 08:38
 
Fecha de Ingreso: octubre-2003
Mensajes: 540
Antigüedad: 20 años, 6 meses
Puntos: 1
Respuesta: Obtener registros de una fecha en particular

Entiendo, lo voy a revisar, muchas gracias.

Etiquetas: fecha, registros
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 21:47.