usar usando una tablas tabla resultados registros obtener mostrar listar formulario extraer ejemplo datos contador consulta como mysql

usando - ¿Hay alguna función de MySQL para obtener todas las filas con una fecha de inicio o finalización que se encuentre entre un inicio y una fecha de finalización determinados?



mostrar tablas de una base de datos mysql en php (5)

Básicamente, puede usar comparaciones regulares, las anteriores deben funcionar, el truco es verificar todos los diferentes casos que puedan ocurrir.

A) eventos con una fecha de finalización dentro del rango

B) eventos con una fecha de inicio dentro del rango

C) eventos con fechas de inicio y finalización dentro del rango

D) eventos con fechas de inicio y finalización fuera del rango, pero superpuestas

La respuesta de Robert es buena, pero no tiene en cuenta el caso D, donde el evento comienza antes del rango y termina después del rango.

Tengo una tabla de eventos con una hora de inicio y finalización registrada como un objeto DATETIME de MySQL (en el formato YYYY-MM-DD HH:MM:SS . Quiero encontrar todos los eventos que ocurren en un rango de fechas específico. puede abarcar varios días (e ir fuera de mi rango de fechas, pero quiero devolverlos si se superponen por 1 segundo o más con mi rango de fechas).

Sugerencias?


Esto encontrará todos los eventos que están completamente contenidos dentro del rango:

SELECT * FROM table WHERE start_date BETWEEN start_of_range AND end_of_range AND stop_date BETWEEN start_of_range AND end_of_range

Esto encontrará cualquier evento en el que cualquier parte del evento se superponga a cualquier parte del rango:

SELECT * FROM table WHERE start_date <= end_of_range AND stop_date >= start_of_range


Las respuestas de @Bill the Lizard y @Robert Gamble son correctas para la pregunta formulada, pero me pregunto si estás preguntando qué crees que eres ... Si estás buscando eventos superpuestos, entonces debes tener en cuenta eventos de cuenta más largos que su rango de búsqueda.

Monday Tuesday Wednesday Thursday Search: |-----------| Shopping |-----| Found OK Eating |--------| Found OK |---------------------------------| Not found!

Si quisiera incluir SO, haría:

SELECT * FROM table WHERE (start_date < end_of_range AND end_date > start_of_range)


SELECT * FROM table WHERE startdate >= ''starting date'' AND startdate < ''ending date'' OR enddate >= ''starting date'' AND enddate < ''ending date''

debería funcionar para usted.

Asegúrese de especificar ''fecha de inicio'' y ''fecha de finalización'' con el tiempo incluido.

''2008-01-01 00:00:00'''' AND ''2008-01-31 23:59:59''

Esto ayudará a evitar errores cuando las fechas son las mismas, pero su tiempo cae dentro del intervalo unas pocas horas, minutos o segundos.


Llya, respuesta de Roberts con,

SELECCIONAR * FROM tabla WHERE start_date <= end_of_range AND stop_date> = start_of_range

funciona bien con,

D) eventos con fechas de inicio y finalización fuera del rango, pero superpuestas

??