una restar obtener horas fechas fecha entre dias comparar calcular año actual mysql date select

obtener - restar fechas mysql en dias



MySQL SELECCIONA DONDE la fecha coincide con el día(y no necesariamente el tiempo) (3)

Tengo una tabla que contiene una columna de fecha y hora. Deseo devolver todos los registros de un día determinado independientemente de la hora. O en otras palabras, si mi tabla solo contiene los 4 registros siguientes, solo se devolverán el 2º y 3º si me limito a 2012-12-25.

2012-12-24 00:00:00 2012-12-25 00:00:00 2012-12-25 06:00:00 2012-12-26 05:00:00


Puedes usar % :

SELECT * FROM datetable WHERE datecol LIKE ''2012-12-25%''


... WHERE date_column >=''2012-12-25'' AND date_column <''2012-12-26'' puede funcionar mejor (si tiene un índice en date_column) que DATE .


NUNCA VAYA NUNCA usando un selector como DATE(datecolumns) = ''2012-12-24'' - es un asesino de rendimiento:

  • calculará DATE() para todas las filas, incluidas aquellas que no coinciden
  • hará que sea imposible usar un índice para la consulta

Es mucho más rápido de usar

SELECT * FROM tablename WHERE columname BETWEEN ''2012-12-25 00:00:00'' AND ''2012-12-25 23:59:59''

ya que esto permitirá el uso del índice sin cálculo.

EDITAR

Como señaló Used_By_Already, en el tiempo transcurrido desde la respuesta inicial en 2012, surgieron versiones de MySQL, donde el uso de ''23: 59: 59 ''como fin de semana ya no es seguro. Una versión actualizada debería leer

SELECT * FROM tablename WHERE columname >=''2012-12-25 00:00:00'' AND columname <''2012-12-26 00:00:00''

La esencia de la respuesta, es decir, la evitación de un selector en una expresión calculada, por supuesto, sigue en pie.