Em SQL como comparar os valores de data?

Usando a sintaxe MySQL e tendo uma tabela com uma linha como:

mydate DATETIME NULL,
Há uma maneira de fazer algo como:
... WHERE mydate<='2008-11-25';
Estou a tentar, mas não estou a fazê-lo funcionar.

Author: GEOCHET, 2008-11-25

5 answers

Uh, WHERE mydate<='2008-11-25' é a maneira de o fazer. Deve funcionar.

Recebeste uma mensagem de erro? Estás a usar uma versão antiga do MySQL?

Edite: o seguinte funciona bem para mim no 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';
 19
Author: Eli, 2008-11-26 16:21:21
O Nevermind encontrou uma resposta. O mesmo para quem estivesse disposto a responder.
WHERE DATEDIFF(mydata,'2008-11-20') >=0;
 8
Author: fmsf, 2008-11-25 19:33:48

Na sintaxe SQL padrão, você usaria:

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

Isto é, a data da palavra-chave deve preceder o texto. Em alguns DBMS, no entanto, você não precisa ser tão explícito; o sistema irá converter a coluna de data em uma string, ou a string em um valor de data, automaticamente. Existem nominalmente algumas implicações interessantes se a data for convertida em uma string - se você tiver datas no primeiro milênio (0001-01-01 .. 0999-12-31) e o(S) zero (S) inicial (s) são omitidos por o sistema de formatação.

 6
Author: Jonathan Leffler, 2008-11-25 22:55:33

Pode adicionar o componente de tempo

WHERE mydate<='2008-11-25 23:59:59'
Mas isso pode falhar nas datas de transferência do DST se a minha data for 2008-11-25 24: 59: 59, por isso é provavelmente mais seguro apanhar tudo antes da próxima data.
WHERE mydate < '2008-11-26 00:00:00'
 0
Author: too much php, 2008-11-26 06:17:20

O teu problema pode ser que estejas a lidar com dados DATETIME, não apenas datas. Se uma linha tem uma data minha que é '2008-11-25 09:30 AM', então o seu onde a minha data não vai devolver essa fila. "2008-11-25" tem uma hora implícita de 00: 00 (meia-noite), por isso, mesmo que a parte da data é a mesma, eles não são iguais, e o meu encontro é maior.

Se usares

 0
Author: DancingFool, 2008-11-26 06:50:22