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'';