SQLite comparer des dates
J'ai cette Instruction SQL:
SELECT Geburtsdatum FROM Kunde
WHERE Geburtsdatum BETWEEN '1993-01-01' AND '2000-01-01'
mais j'obtiens des résultats bizarres, comme: 2.02.1990
'Geburtsdatum' est une DATE
Des suggestions ou des solutions?
mon tableau de structure:
CREATE TABLE Kunde (
Kunde_ID INTEGER NOT NULL ,
Card INTEGER ,
Vorname VARCHAR(255) NOT NULL ,
Nachname VARCHAR(255) NOT NULL ,
Ort VARCHAR(255) NOT NULL ,
Strasse VARCHAR(255) NOT NULL ,
Postleitzahl VARCHAR(10) NOT NULL ,
Mail VARCHAR(255) ,
Telefonnummer VARCHAR(255) ,
Geburtsdatum DATE NOT NULL ,
Beitrittsdatum DATE NOT NULL ,
Geschlecht INTEGER NOT NULL ,
Land VARCHAR(255) NOT NULL DEFAULT 'Österreich' ,
Bankname VARCHAR(255) ,
Bankleitzahl VARCHAR(255) ,
Kontonummer VARCHAR(255) ,
GroupID INTEGER NOT NULL ,
Besucher INTEGER ,
Access BOOLEAN ,
image BLOB NULL ,
writeDate DATE ,
drinkAbo BOOLEAN ,
PRIMARY KEY (Kunde_ID) )
Pouvez-vous montrer quelques échantillons sur SQLFiddle?
Accrocher sur une minute. À partir de la documentation: "SQLite ne pas avoir une classe de stockage mis de côté pour le stockage des dates et/ou heures." Donc c' pas être un JOUR - qu'est-ce que votre colonne vraiment?
c'est une DATE.. dans ma creationscript, aussi mon sqlite-gestionnaire de m'indiquer une DATE de type
dans sql violon il fonctionne oO
Accrocher sur une minute. À partir de la documentation: "SQLite ne pas avoir une classe de stockage mis de côté pour le stockage des dates et/ou heures." Donc c' pas être un JOUR - qu'est-ce que votre colonne vraiment?
c'est une DATE.. dans ma creationscript, aussi mon sqlite-gestionnaire de m'indiquer une DATE de type
dans sql violon il fonctionne oO
OriginalL'auteur Christian 'fuzi' Orgler | 2012-10-26
Vous devez vous connecter pour publier un commentaire.
À partir de la documentation:
De sorte que votre colonne n'est pas exactement stockée comme une date. Lecture de plus, nous apprenons que les colonnes spécifiés comme
DATE
sont stockéesNUMERIC
à l'aide de l'affinité de la règle 5.Remontant à la section 1.2:
Bon. Essayons donc:
Curieusement, SQL Violon semble magasin
DATE
s comme des chaînes de caractères et le ci-dessus ne fonctionne pas. Dans ce cas, les éléments suivants doivent:En outre, dans votre cas, vous semblez être l'obtention de certains étrange (lire: localisée) format retourné. Je me demande si c'est vraiment une chaîne de caractères dans votre cas aussi, juste avec un format différent. Vous pourriez essayer:
Intéressant, et wow dates sont drôles dans SQLite. Vérifier mon montage.
OriginalL'auteur lc.
Quelqu'un a eu le même problème et a obtenu qu'il soit résolu. (utiliser datetime fonction de comparaison)
Voir SQLite DateTime comparaison
Extrait:
À la suite de la fonction datetime et ayant une chaîne de caractères au format YYYY-MM-DD HH:mm:ss j'ai obtenu de bons résultats comme suit
--EDIT--
Vous êtes essentiellement de la comparaison de chaînes. C'est pourquoi le comportement inattendu. Convertir datetime à l'aide de la fonction de comparaison avant et cela devrait fonctionner.
bizarre /wi(ə)rd/ ", ce qui Suggère quelque chose de surnaturel; l'inquiétante étrangeté"... est un mot vague. Qu'est-ce exactement avez-vous observé? De quoi vos valeurs dans le tableau?
par exemple, j'obtiens un résultat comme la date: '13.02.1990" et ce n'est pas entre l'année 1993 et 2000, à droite? 🙂
parce que vous êtes de la comparaison de chaînes. Utilisez la fonction datetime convertir à la date puis de les comparer.
OriginalL'auteur rizalp1
Pour être en mesure de comparer des dates, vous devez les stocker dans un des SQLite est pris en charge formats de date, comme un
JJJJ-MM-TT
chaîne. Vos dates sont stockés sous forme de chaînes localisé dans un format de date qui n'est pas reconnu par SQLite.Si le plus important champ n'est pas au début de la chaîne, chaîne comparaisons ne fonctionnera pas pour les dates.
Avec les valeurs actuellement dans votre table, vous ne serez pas en mesure de faire des comparaisons.
OriginalL'auteur CL.