Ver Mensaje Individual
  #2 (permalink)  
Antiguo 05/09/2010, 10:50
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Diferencia entre buscar por %d%m%Y y Y%m%d

Porque en general las bases de datos almacenan las fechas (y DATETIME es un campo de fecha-hora) con el formato YYYY-mm-dd o YYYY/mm/dd.
La búsqueda ha de hacerse, pues, sobre ese formato. Naturalmente, mediante programación tú puedes permitir al cliente escribir el orden que quieras y luego lanzar la búsqueda con ese orden.
En tu primera consulta pides mediante DATE_FORMAT un formato de salida que elimine la hora (en tu base sigue la fecha guardada como te digo y además se incluye la fecha hora; luego en el BETWEEN ofreces dos cadenas de texto sin formato de fecha; podrías usar el DATE_FORMAT() en las dos partes del BETWEEN, pero dado que se trata de una conversión lo mejor sería usar str_to_date(), una función creada para eso.
SELECT DATE_FORMAT(pe.Fecha_Inicio,'%d-%m-%Y') FROM tutabla WHERE Fecha_Inicio BETWEEN STR_TO_DATE('01-09-2010','%Y-%m-%d') AND STR_TO_DATE('04-09-2010',Y-%m-%d)
Como ves, una cosa es el formato de salida, y otra el formato en el que buscas.
Pero lo mejor en estos casos es usar
SELECT DATE_FORMAT(pe.Fecha_Inicio,'%Y-%m-%d') FROM tutabla WHERE pe.Fecha_inicio BETWEEN '2010-09-01' AND '2010-09-04'