rango por mayor generar fechas fecha entre consultar consulta comparar buscar mysql datetime

mysql - por - Seleccionar datos entre un rango de fecha/hora



generar rango de fechas sql (8)

¿Cómo selecciono datos entre un rango de fechas en MySQL? Mi columna de datetime está en formato de hora zulú de 24 horas.

select * from hockey_stats where game_date between ''11/3/2012 00:00:00'' and ''11/5/2012 23:59:00'' order by game_date desc;

No devuelve nada a pesar de tener datos entre estos períodos de tiempo. ¿Tengo que forzar los valores en los campos ''de'' y ''a'' a escribir el tipo de datetime en la consulta?


Aquí hay una forma simple usando la función de fecha:

select * from hockey_stats where date(game_date) between date(''2012-11-03'') and date(''2012-11-05'') order by game_date desc


De forma sencilla se puede consultar como

select * from hockey_stats where game_date between ''2018-01-01'' and ''2018-01-31'';

Esto funciona si el tiempo no es una preocupación.

También considere el tiempo de la siguiente manera: seleccione * de hockey_stats donde (fecha_juego entre ''2018-02-05 01:20:00'' y ''2018-02-05 03:50:00''); Tenga en cuenta que esto es para el servidor MySQL.


Debe buscar la defensa de la fecha en la forma en que inserta los datos de game_date en su base de datos ... por ejemplo, si insertó el valor de la fecha en una fecha larga o corta.

SELECT * FROM hockey_stats WHERE game_date >= "6/11/2018" AND game_date <= "6/17/2018"

También puedes usar ENTRE :

SELECT * FROM hockey_stats WHERE game_date BETWEEN "6/11/2018" AND "6/17/2018"

simple como eso.


El formato de fecha de MySQL es este: YMD. Está utilizando Y / M / D. Eso es incorrecto modifica tu consulta

Si inserta la fecha como Y / M / D, se insertará un valor nulo en la base de datos.

Si está utilizando PHP y la fecha que obtiene del formulario es como este Y / M / D, puede reemplazarlo con el uso de la declaración.

out_date=date(''Y-m-d'', strtotime(str_replace(''/'', ''-'', $data["input_date"])))


Necesitas actualizar el formato de fecha:

select * from hockey_stats where game_date between ''2012-03-11 00:00:00'' and ''2012-05-11 23:59:00'' order by game_date desc;


Probablemente necesites usar la función STR_TO_DATE :

select * from hockey_stats where game_date between STR_TO_DATE(''11/3/2012 00:00:00'', ''%c/%e/%Y %H:%i:%s'') and STR_TO_DATE(''11/5/2012 23:59:00'', ''%c/%e/%Y %H:%i:%s'') order by game_date desc;

(Si game_date es una cadena, es posible que necesites usar STR_TO_DATE en ella)


Puede STR_TO_DATE función STR_TO_DATE y pasar sus propios parámetros de fecha según el formato que haya publicado:

select * from hockey_stats where game_date between STR_TO_DATE(''11/3/2012 00:00:00'', ''%c/%e/%Y %H:%i:%s'') and STR_TO_DATE(''11/5/2012 23:59:00'', ''%c/%e/%Y %H:%i:%s'') order by game_date desc;

O simplemente use el formato que MySQL maneja con las fechas YYYY: MM: DD HH: mm: SS y tenga la consulta como

select * from hockey_stats where game_date between ''2012-03-11 00:00:00'' and''2012-05-11 23:59:00'' order by game_date desc;


Una forma sencilla:

select * from hockey_stats where game_date >= ''2012-03-11'' and game_date <= ''2012-05-11''