2010-12-15 61 views
2

J'ai cherché sur la façon de le faire mais je ne suis pas venu avec une réponse claire (peut-être mes ressources ne sont pas si bonnes). J'ai besoin de faire une requête SQLite pour récupérer des données entre deux dates d'une base de données SQLite.SQLite, faire une requête basée sur les dates

Je suis en train ceci:

SELECT CONTACTNAME 
FROM SHIPMENT 
WHERE DATECREATED 
BETWEEN date('11-15-2010') 
AND date('12-25-2010'); 

Les données sont dans mon SQLite DB:

CONTACTNAME=VARCHAR 
DATECREATED=date (format: "11/22/2010") 

Répondre

3

Essayez simplement la date de retrait():

SELECT CONTACTNAME 
FROM SHIPMENT 
WHERE DATECREATED 
BETWEEN '2010-11-15' 
AND '2010-12-25' 
+0

ah ok merci, ne sais pas pourquoi le tutoriel j'ai lu eu que là – Rick

+2

Cela fonctionne uniquement avec la date AAAA-MM-JJ commande. – dan04

+0

@ dan04, pouvez-vous clarifier "ça"? J'ai essayé le code que j'ai utilisé ci-dessus sur ma propre base de données SQLite, avec l'ordre MM-JJ-AAAA, donc je me demande si vous faites référence à date() ou s'il existe des différences dans les versions de SQLite. :) –

13

SQLite n'a pas un type de date. Vous pouvez vous en sortir en stockant les dates sous forme de chaînes, mais vous devez utiliser l'ordre de date AAAA-MM-DD, PAS MM-JJ-AAAA. Il y a deux principales raisons pour cela:

(1) Correct commande

avec des dates AAAA-MM-JJ, l'ordre lexicographique est le même que l'ordre chronologique, ce qui rend les <, > et BETWEEN opérateurs fonctionne comme prévu.

Ceci est et non le cas pour les dates MM-JJ-AAAA. Une requête pour les dates BETWEEN '11-15-2010' AND '12-25-2010' correspond faussement à '11-22-1963' et '12-21-2012'.

(2) Compatibilité avec SQLite date and time functions.

Ils acceptent les dates de type chaîne et numérique (julien), mais si vous transmettez une chaîne à l'une de ces fonctions, l'ordre doit être YYYY-MM-DD.

1
SELECT field_1,field_2,date_field 
WHERE julianday(date_field) 
BETWEEN julianday('1998-01-01') and julianday('2008-01-01'); 
+3

Ce serait encore mieux si vous avez expliqué le code que vous avez posté. –