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

[SOLUCIONADO] Resultado de datos entre 2 fechas

Estas en el tema de Resultado de datos entre 2 fechas en el foro de Mysql en Foros del Web. Buenas noches, primero no se si iria aqui esta consulta o no, pero voy a probar. Tengo en un codigo PHP algo parecido a esto: ...
  #1 (permalink)  
Antiguo 30/06/2013, 14:04
Avatar de Wasper  
Fecha de Ingreso: julio-2006
Ubicación: de cai, picha!!!
Mensajes: 1.030
Antigüedad: 17 años, 9 meses
Puntos: 41
Resultado de datos entre 2 fechas

Buenas noches, primero no se si iria aqui esta consulta o no, pero voy a probar.

Tengo en un codigo PHP algo parecido a esto:
Cita:
SELECT * FROM reserva WHERE estado != 3 and fecha_inicio >= .'$fecha_minima.' ORDER BY fecha_inicio and estado ASC
Lo que pretendo aqui es sacar los datos con fechas superior o igual al dia de hoy, pero claro, no me da resultado alguno.

El campo fecha_inicio es datetime y la variable esta recogida de esta manera:
Cita:
$fecha_minima = date("Y-m-d H:m:s");
El resultado si hago echo de la variable $fecha_minima sale esto 2013-06-30 22:06:06 y el campo fecha_inicio tiene esto dentro 2013-08-09 09:30:00

Mi pregunta es, ¿que estoy haciendo mal? Deberia salirme resultados con fecha posterior al dia de hoy pero me lanza el error:
Cita:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in...
Decir que si quito del SELECT lo de la fecha dejando solo el estado si funciona correctamente.

Muchas gracias
__________________
Saludos, Jose

Paginas web y SEO
Anuncios por palabras
  #2 (permalink)  
Antiguo 30/06/2013, 14:11
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Resultado de datos entre 2 fechas

El formato de fechas de SQL es 'YYYY-MM-DD' y Ud esta usando algo diferente.......... nunca le va a funcionar
__________________
Salu2!
  #3 (permalink)  
Antiguo 30/06/2013, 14:11
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Resultado de datos entre 2 fechas

Wasper, consulta una referencia de SQL.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 30/06/2013, 14:13
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Resultado de datos entre 2 fechas

Adicional a lo que te dice Pate, debes corregir el formato de la fecha, pruebe asi:

Cita:
$fecha_minima = date("Y-m-d");

Ahora Ud dice ENTRE DOS fechas, asi que respondiendo a su consulta original, hay varias formas de hacer eso, una es con BETWEEN, vea otras tambien

http://stackoverflow.com/questions/7...l-date-between
__________________
Salu2!
  #5 (permalink)  
Antiguo 01/07/2013, 04:38
Avatar de Wasper  
Fecha de Ingreso: julio-2006
Ubicación: de cai, picha!!!
Mensajes: 1.030
Antigüedad: 17 años, 9 meses
Puntos: 41
Respuesta: Resultado de datos entre 2 fechas

Gracias a ambos por las respuestas.

Italico76 Probandolo de esa manera tampoco consigo resultados, ya que el campo que estoy buscando es de tipo DATETIME y la variable que me pasas es de tipo DATE, aun asi lo he probado pero nada.

pateketrueke ¿Te refieres a que lea el manual de SQL? Si es asi... agradezco tu respuesta pero, ¿en serio crees que no he hecho eso?

Quizas el titulo del tema no es correcto del todo, pero creo que el texto esta bien explicado lo que quiero hacer, de todas formas hago un resumen.

Si tengo 4000 registros en una tabla, de los cuales solo me interesan los registros con fecha posterior o igual al dia de hoy y sabiendo que el campo es de formato DATETIME (YYYY-MM-DD HH:MM:SS) ¿como deberia hacerlo?

Y no me vale BETWEEN ya que solo se 1 fecha que es el dia de hoy.

Gracias de nuevo
__________________
Saludos, Jose

Paginas web y SEO
Anuncios por palabras
  #6 (permalink)  
Antiguo 01/07/2013, 05:27
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 9 meses
Puntos: 2114
Respuesta: Resultado de datos entre 2 fechas

Supongo que algo así te valdría:

Código MySQL:
Ver original
  1. SELECT * FROM reserva WHERE estado != 3 AND fecha_inicio >= CURDATE();
  #7 (permalink)  
Antiguo 01/07/2013, 05:55
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Resultado de datos entre 2 fechas

Excelente la aproximacion de @pzin, pero creeria (si es que no me sigo equivocando) que debe usar la funcion NOW() y no la de CURDATE() puesto que jamas tendras registros creados mañana pero si hace 1 segundo, ademas la fecha es DATETIME y no DATE --que tambien fue mi error mas arriba--

Dejo una comparativa de ambas funciones de MySQL
__________________
Salu2!
  #8 (permalink)  
Antiguo 01/07/2013, 06:12
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 9 meses
Puntos: 2114
Respuesta: Resultado de datos entre 2 fechas

Es que no es lo mismo igual o mayor al día de hoy que igual o mayor a ahora. Por eso CURDATE() en lugar de NOW().

Puedes comparar CURDATE() con un campo DATETIME. La comparación efectiva quedaría en algo así como:

Código MySQL:
Ver original
  1. fecha_inicio >= '2013-07-01 00:00:00'

Obviamente, si lo haces con NOW() no te van a salir los registros mayores de hoy, sino sólo los mayores o iguales a ahora.
  #9 (permalink)  
Antiguo 01/07/2013, 09:00
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Resultado de datos entre 2 fechas

Y me seguí equivocando.... que prediccion jajaja

@pzin, tienes razon por donde se lo mire..... asi la comparacion internamente se haga como string o como timestamp siempre funcionara con CURDATE() y ... jamas lo hará lo ultimo que dije

A tal paliza y excelente leccion me has dado...... me alejo del foro de MySQL por unos añitos (...) que no es lo mio
__________________
Salu2!

Última edición por Italico76; 01/07/2013 a las 09:13
  #10 (permalink)  
Antiguo 01/07/2013, 12:42
Avatar de Wasper  
Fecha de Ingreso: julio-2006
Ubicación: de cai, picha!!!
Mensajes: 1.030
Antigüedad: 17 años, 9 meses
Puntos: 41
Respuesta: Resultado de datos entre 2 fechas

Muchas gracias, es cierto que esta genial todo lo que me habeis puesto y os lo agradezco a todos, he realizado pruebas con todos los ejemplos y me van a servir bastante.

No obstante, he realizado unas pruebas y he podido descubrir que de esta forma tambien funciona:

PD: El original que habia arriba tenia un pequeño error, pero no fue por eso por lo que no me salia

Cita:
SELECT * FROM reserva WHERE estado != 3 and fecha_inicio >= "'.$fecha_minima.'" ORDER BY fecha_inicio and estado ASC
En rojo marco lo que he puesto y ahora si me discrimina desde la fecha de hoy hacia atras. Unas comillas dobles y solucionado. Jejejejeje.

Personalmente no se me habria ocurrido asi, pero funciona.

Muchas gracias!
__________________
Saludos, Jose

Paginas web y SEO
Anuncios por palabras

Etiquetas: php, resultado, resultados, select
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 04:51.