2010-02-22 10 views
36

Tengo una tabla sqlite con fecha de nacimiento. Me gustaría ejecutar una consulta para seleccionar los registros en los que la edad es más de 30. he intentado lo siguiente pero no funciona:sqlite seleccione con la condición en la fecha

select * from mytable where dob > '1/Jan/1980' 
select * from mytable where dob > '1980-01-01' 

Respuesta

56

algo como esto podría ser utilizado:

select dateofbirth from customer Where DateofBirth BETWEEN date('1004-01-01') AND date('1980-12-31'); 
select dateofbirth from customer where date(dateofbirth)>date('1980-12-01'); 
select * from customer where date(dateofbirth) < date('now','-30 years'); 

Si está utilizando SQLite V3.7.12 o superior

no uso date(dateofbirth) sólo tiene que utilizar dateofbirth. Por lo que su consulta se vería así:

select * from customer where dateofbirth < date('now','-30 years'); 
+18

Todos los que vienen aquí desde google: ahora ya no funciona con sqlite v3.7.12; no use 'date (dateofbirth)', solo 'dateofbirth' sería bueno. – wecing

2

intentar escribir usando el formato de fecha 'AAAA-MM

select * from mytable where dob > '1980-01-01' 

Una forma más programic DD' sería algo como esto:

select * from mytable where datediff(dob, now()) > 30 

que necesitará para encontrar la sintaxis específica para SQLite.

+0

seleccionar * de mitabla donde dob> '1980-01-01' no funciona – Thunder

+2

Ya en 2010 'select * from mytable where dob> '1980-01-01'' podría no funcionar, pero actualmente este comando funciona perfectamente en' sqlite3'. – Shane

+1

Estoy de acuerdo, en 'sqlite3' está funcionando bien. –

19

mediante Documentos de magia en the sqlite website:

select * from mytable where dob < date('now','-30 years'); 
Cuestiones relacionadas