2009-06-29 92 views
30

quiero comparar dos fechas con el tiempo, quiero que todos los resultados from tbl where date1 > date2Mysql comparar dos campos de fecha y hora

Select * From temp where mydate > '2009-06-29 04:00:44'; 

pero simplemente no es comparar las fechas de tiempo. me está dando todo el conjunto de resultados de la fecha de hoy

'2009-06-29 11:08:57' 
'2009-06-29 11:14:35' 
'2009-06-29 11:12:38' 
'2009-06-29 11:37:48' 
'2009-06-29 11:52:17' 
'2009-06-29 12:12:50' 
'2009-06-29 12:13:38' 
'2009-06-29 12:19:24' 
'2009-06-29 12:27:25' 
'2009-06-29 12:28:49' 
'2009-06-29 12:35:54' 
'2009-06-29 12:36:54' 
'2009-06-29 12:49:57' 
'2009-06-29 12:58:04' 
'2009-06-29 04:13:20' 
'2009-06-29 04:56:19' 
'2009-06-29 05:00:23' 
'2009-06-29 05:04:26' 
'2009-06-29 05:08:17' 
'2009-06-29 05:26:57' 
'2009-06-29 05:29:06' 
'2009-06-29 05:32:11' 
'2009-06-29 05:52:07' 

¡Gracias de antemano!

+13

No hay ningún resultado que sea menor que '2009-06-29 04:00:44' ;, así que parece que tu código está funcionando, ¿o me falta algo? –

+0

Quiero estas fechas como Salida no antes de eso '2009-06-29 04:56:19' '2009-06-29 05:00:23' '2009-06-29 05:04:26' '2009-06-29 05:08:17' '2009-06-29 05:26:57' '2009-06-29 05:29:06' '2009-06-29 05:32:11 ' ' 2009-06-29 05:52:07 ' –

+1

Um ... No tiene ningún elemento visible desde antes. Parece que estás sugiriendo que '2009-06-29 11:08:57' viene antes '2009-06-29 04:00:44'. 4 AM llega antes de las 11 a.m., y por lo tanto, ves que las 11 a.m. son más de las 4 a.m. De nuevo, ¿me estoy perdiendo algo? –

Respuesta

53

La consulta que desea mostrar como ejemplo es:

SELECT * FROM temp WHERE mydate > '2009-06-29 16:00:44'; 

04:00:00 es 4am, por lo que todos los resultados que está mostrando vienen después de eso, lo que es correcto .

Si desea mostrar todo después de las 4PM, debe utilizar la notación correcta (24 horas) en su consulta.

Para hacer las cosas un poco más claras, intente esto:

SELECT mydate, DATE_FORMAT(mydate, '%r') FROM temp; 

que le mostrará la fecha, y su tiempo de 12 horas.

3

Su consulta aparentemente devolvió todas las fechas correctas, incluso teniendo en cuenta la hora.

Si aún no está contento con los resultados, administre DATEDIFF y busque resultados negativos o positivos entre las dos fechas.

Asegúrate de que tu columna mydate sea de tipo datetime.

3

¿Quieres pedirlo?

Select * From temp where mydate > '2009-06-29 04:00:44' ORDER BY mydate; 
+0

no solo quiero fecha después de '2009-06-29 04:00:44' –

+0

Eso es lo que tienes. – alexn

+0

no estoy obteniendo todo el conjunto de resultados para la fecha de hoy, no después de la fecha y hora que he especificado, por ejemplo: - el tiempo que he dado es 4PM y obtengo registros de 11AM en eso. –

9

Usted puede utilizar el siguiente código SQL para comparar tanto la fecha y hora -

Select * From temp where mydate > STR_TO_DATE('2009-06-29 04:00:44', '%Y-%m-%d %H:%i:%s'); 

salida de mysql adjunta cuando yo mismo SQL en el mismo tipo de tabla y el campo que usted ha mencionado en el problema-

enter image description here

Debería funcionar perfecto.

+0

Brillante. ¡Mysql está comparando cadena en vez de fechas! Lo tendré en cuenta a partir de ahora. ¡Excelente respuesta, votado! –

+0

STR_TO_DATE, gracias !!! – mircea

Cuestiones relacionadas