hora - Comparando fechas en MySQL ignorando la porción de tiempo de un campo DateTime
consulta fechas mysql between (7)
@ Mark tiene un buen enfoque, pero solo tenga cuidado de que siempre tendrá que calcular y encontrar el día siguiente en ese caso. Si desea evitar eso y aún ignorar el tiempo, podría hacer lo siguiente:
WHERE order_date >= ''2012-05-27 00:00:00'' AND order_date <= ''2012-05-27 23:59:59''
Espero que esto tenga sentido.
Necesito comparar fechas en MySQL ignorando la porción de tiempo en una columna DateTime
. He intentado el siguiente SQL.
SELECT * FROM order_table where order_date=date_format(''2012-05-03'', ''%Y-%m-%d'');
No recupera ninguna fila aunque haya una fecha 2012-05-03 10:16:46
en la tabla MySQL. ¿Cómo se puede ignorar la porción de tiempo en el campo DateTime
al comparar fechas en MySQL?
SELECT * FROM order_table WHERE date(order_date) = ''2012-05-03'';
Puede usar la función DATE
:
SELECT col1, col2, ..., coln
FROM order_table
WHERE date(order_date) = ''2012-05-03''
Pero esto es más eficiente, si su tabla es grande y tiene un índice en la order date
:
SELECT col1, col2, ..., coln
FROM order_table
WHERE order_date >= ''2012-05-03''
AND order_date < ''2012-05-04''
Si desea pasar una fecha, puede intentar algo como esto:
where YEAR(order_date)=''2012'' AND MONTH(order_date)=''05'' AND DAY(order_date)=''03''
Puedes ver esto para más funciones.
Tal vez, puedes usar la función como date()
. Pero en este caso, la velocidad se puede reducir, porque el índice no se puede usar. Entonces, recomiendo usar
SELECT * FROM order_table
WHERE order_date between(''2012-05-03 0:0:0'' and ''2012-05-03 23:59:59'')
uno de los siguientes podría usarse al comparar fechas en MySQL:
DATEDIFF() Subtract two dates
TIMEDIFF() Subtract time
TIMESTAMPDIFF() Subtract an interval from a datetime expression
PERIOD_DIFF() Return the number of months between periods
para obtener más información sobre las funciones de la documentación de MySQL.
Esto es un poco antiguo ... pero una respuesta correcta también es utilizar date_format en la columna order_date como a continuación:
SELECT * FROM order_table where date_format(order_date, ''%Y-%m-%d'')=''2012-05-03'';