varios valores tabla simbolo registros operadores misma hora hacer fechas ejemplos diferente consultas comparar comparaciones comparacion sql mysql compare where

tabla - En SQL, ¿cómo comparar valores de fecha?



simbolo % en sql (5)

En la sintaxis SQL estándar, usaría:

WHERE mydate <= DATE ''2008-11-20''

Es decir, la palabra clave DATE debe preceder a la cadena. En algunos DBMS, sin embargo, no necesita ser tan explícito; el sistema convertirá automáticamente la columna DATE en una cadena, o la cadena en un valor DATE. Existen, nominalmente, algunas implicaciones interesantes si el DATE se convierte en una cadena; si tiene fechas en el primer milenio (0001-01-01 .. 0999-12-31) y el / los cero (s) inicial (es) son omitidos por el sistema de formateo.

Usando la sintaxis de MySQL y teniendo una tabla con una fila como:

mydate DATETIME NULL,

¿Hay alguna manera de hacer algo como esto?

... WHERE mydate<=''2008-11-25'';

Lo intento pero no lo estoy logrando realmente.


Nevermind encontró una respuesta. Ty lo mismo para cualquiera que estuviera dispuesto a responder.

WHERE DATEDIFF(mydata,''2008-11-20'') >=0;


Podría agregar el componente de tiempo

WHERE mydate<=''2008-11-25 23:59:59''

pero eso podría fallar en las fechas de cambio de horario de verano si mydate es ''2008-11-25 24:59:59'', por lo que es más seguro tomar todo antes de la próxima fecha:

WHERE mydate < ''2008-11-26 00:00:00''


Su problema puede ser que está tratando con datos de DATETIME, no solo fechas. Si una fila tiene un fechado que es ''2008-11-25 09:30 AM'', entonces su DONDE mi fecha <= ''2008-11-25''; no va a devolver esa fila. ''2008-11-25'' tiene una hora implícita de 00:00 (medianoche), así que aunque la parte de la fecha sea la misma, no son iguales, y mydate es más grande.

Si usa <''2008-11-26'' en lugar de <= ''2008-11-25'', eso funcionaría. El método Datediff funciona porque compara solo la parte de la fecha e ignora los tiempos.


Uh, WHERE mydate<=''2008-11-25'' es la manera de hacerlo. Eso debería funcionar.

¿Recibes un mensaje de error? ¿Estás usando una versión antigua de MySQL?

Editar: Lo siguiente funciona bien para mí en MySQL 5.x

create temporary table foo(d datetime); insert into foo(d) VALUES (''2000-01-01''); insert into foo(d) VALUES (''2001-01-01''); select * from foo where d <= ''2000-06-01'';