2010-02-22 26 views
36

Doğum Tarihi ile bir sqlite tablom var. Ben yaşı aşkın 30. Aşağıdaki denedi olan bu kayıtların seçmek için bir sorguyu yürütmek istiyorum ama çalışmıyor:sqlite Seçim koşulu ile date

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

cevap

56

bu gibi bazı şey kullanılabilir:

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'); 

sadece dateofbirth kullanmak date(dateofbirth) kullanmak SQLite V3.7.12 veya daha

Dont kullanıyorsanız. Yani sorgu şu şekilde görünecektir:

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

Google'dan buraya gelen herkes: Artık artık sqlite v3.7.12 ile çalışmıyor; Tarih (dateofbirth) 'kullanmayın, sadece' dateofbirth' iyi olurdu. – wecing

2

tarih biçimini kullanarak yazmayı deneyin 'YYYY-MM- Sen sqlite için özel sözdizimi bulmak için ihtiyaç duyacağınız

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

: GG'

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

daha programic yolu böyle bir şey olurdu.

+0

select * dob> '1980-01-01' 2010 yılında – Thunder

+2

Geri çalışmıyor mytable dan 'doble> '1980-01-01' seçeneğindeki mytable listesinden 'select * seçilemez, ancak şu anda bu komut' sqlite3' üzerinde mükemmel bir şekilde çalışmaktadır. – Shane

+1

Katılıyorum, 'sqlite3'de iyi çalışıyor. –

19

sihirli belgeler kullanma the sqlite website at:

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