Question

Utiliser la syntaxe MySQL et avoir une table avec une ligne comme:

mydate DATETIME NULL,

Y a-t-il un moyen de faire quelque chose comme:

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

J'essaie mais je ne l'obtiens pas vraiment.

Était-ce utile?

La solution 2

Nevermind a trouvé une réponse. C'est la même chose pour quiconque est disposé à répondre.

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

Autres conseils

Euh, WHERE mydate<='2008-11-25' est le moyen de le faire. Cela devrait fonctionner.

Avez-vous un message d'erreur? Utilisez-vous une ancienne version de MySQL?

Éditer: Ce qui suit fonctionne bien pour 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';

Dans la syntaxe SQL standard, vous utiliseriez:

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

C'est-à-dire que le mot-clé DATE doit précéder la chaîne. Dans certains SGBD, cependant, vous n'avez pas besoin d'être aussi explicite. le système convertira automatiquement la colonne DATE en chaîne ou la chaîne en valeur DATE. Il y a théoriquement des implications intéressantes si la DATE est convertie en chaîne - si vous avez des dates du premier millénaire (0001-01-01 .. 0999-12-31) et que les zéros de tête sont omis par le système de formatage.

Vous pouvez ajouter le composant horaire

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

mais cela pourrait échouer aux dates de basculement DST si mydate est '2008-11-25 24:59:59', il est donc probablement plus sûr de tout récupérer avant la prochaine date:

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

Votre problème est peut-être que vous avez affaire à des données DATETIME, pas seulement à des dates. Si une ligne a une date qui est '2008-11-25 09:30', votre WHERE mydate & Lt; = '2008-11-25'; ne sera pas renvoyé. cette rangée. La date implicite de "2008-11-25" est 00h00 (minuit). Même si la date est identique, elle n'est pas identique et la date est plus grande.

Si vous utilisez < '2008-11-26' au lieu de & Lt; = '2008-11-25', cela fonctionnerait. La méthode Datediff fonctionne car elle compare uniquement la partie de la date et ignore les heures.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top