Je ne parviens pas à obtenir des résultats fiables de la requête contre une base de données sqlite en utilisant une chaîne de date comme comparaison :
select *
from table_1
where mydate >= '1/1/2009' and mydate <= '5/5/2009'
comment dois-je gérer les comparaisons de dates avec sqlite ?
mise à jour : le champ mydate est un datatype DateTime
Solution :
en utilisant la fonction datetime et en ayant un format de chaîne de caractères comme YYYY-MM-DD HH:mm:ss j'ai obtenu de bons résultats comme suit
select *
from table_1
where mydate >= Datetime('2009-11-13 00:00:00')
and mydate <= Datetime('2009-11-15 00:00:00')
1 votes
Quel est le format de date de la valeur stockée dans votre
mydate
colonne ? Je suppose qu'il ne s'agit pas d'un des formats supportés par SQLite : sqlite.org/lang_datefunc.html1 votes
OMG, il s'agit d'un type de données de type datetime
4 votes
Cette utilisation de datetime() donnera la valeur exacte que vous lui avez donnée, il n'y a aucune raison de l'utiliser ici : utilisez simplement la chaîne de caractères à la place. Et si vous ne traitez que des dates, vous devriez supprimer la partie "zero time" - en fait, assurez-vous que les deux côtés sont dans le même format. (Autrement
'2009-11-13'
pour ma date, sera inférieure à'2009-11-13 00:00:00'
.)1 votes
Pour que Visual Studio avec SQLite fonctionne et me permette d'exécuter une requête date/heure, je dois utiliser l'option
Datetime()
comme l'a fait @Brad dans sa mention de la solution. Sinon VS2012 se plaint. Merci Brad.0 votes
Merci de nous communiquer la solution. Il est étrange que le format par défaut des dates dans .NET aboutisse en fait à l'inverse de "<" par rapport à ">".
0 votes
Ne pas appeler sa rubrique
Date
ou des choses bizarres se produiront (par exemple, votrewhere Date < datetime('...');
ne fonctionne pas).0 votes
Lorsque le mois est inférieur à 10, dois-je ajouter un zéro avant le numéro du mois '2009-09-02 00:00:00' et y a-t-il un problème si je supprime l'heure, la minute et la seconde '2009-01-03' ?
0 votes
10 ans plus tard, je voulais juste souligner que SqLite n'a pas de type de données "datetime" : sqlite.org/datatype3.html . Il semble qu'ils n'aient que
NULL, INTEGER, REAL, TEXT, BLOB