SQLite, haciendo una consulta basada en Fechas

He estado buscando cómo hacer esto, pero no encuentro una respuesta clara (tal vez mis resources no son tan buenos). Necesito hacer una consulta SQLite para recuperar datos entre dos dates de una database SQLite.

Estoy intentando esto:

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

Los datos están en mi database SQLite como:

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

Intenta simplemente eliminar la date ():

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

SQLite no tiene un tipo de date. Puede seguir con el almacenamiento de dates como cadenas, pero necesita usar el order de date AAAA-MM-DD, NO MM-DD-AAAA. Hay dos razones principales para esto:

(1) Ordenamiento correcto

Con las dates YYYY-MM-DD, el order lexicográfico es el mismo que el order cronológico, lo que hace que los operadores < , > y BETWEEN funcionen como se esperaba.

Este no es el caso para las dates MM-DD-YYYY. Una consulta de dates BETWEEN '11-15-2010' AND '12-25-2010' coincidirá falsamente '11-22-1963' y '12-21-2012' .

(2) Compatibilidad con las funciones de date y hora de SQLite .

Aceptan dates tanto de cadena como numéricas (julianas), pero si pasa una cadena a cualquiera de estas funciones, debe tener el order YYYY-MM-DD.

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