2010-02-22 35 views
36

Tôi có bảng sqlite có Ngày sinh. Tôi muốn thực hiện một truy vấn để chọn những hồ sơ, nơi tuổi là hơn 30. Tôi đã thử những điều sau nhưng nó không hoạt động:sqlite chọn với điều kiện vào ngày

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

Trả lời

56

Một số điều như thế này có thể được sử dụng:

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

Nếu bạn đang sử dụng V3.7.12 Sqlite hoặc cao hơn

Dont sử dụng date(dateofbirth) chỉ cần sử dụng dateofbirth. Vì vậy, câu hỏi của bạn sẽ trông như thế này:

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

Tất cả những người đến đây từ google: bây giờ nó không hoạt động nữa với sqlite v3.7.12; không sử dụng 'date (dateofbirth)', chỉ 'dateofbirth' sẽ là tốt. – wecing

2

Hãy thử viết bằng cách sử dụng định dạng ngày 'YYYY-MM-

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

Một cách programic hơn DD' sẽ là một cái gì đó như thế này:

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

gì bạn cần để tìm cú pháp cụ thể cho SQLite.

+0

select * from mytable nơi DOB> '1980/01/01' không hoạt động – Thunder

+2

Trở lại năm 2010 'select * từ mytable nơi dob> '1980-01-01'' có thể không hoạt động, nhưng hiện tại lệnh này hoạt động hoàn hảo trên' sqlite3'. – Shane

+1

Tôi đồng ý, trong 'sqlite3' nó hoạt động tốt. –

19

Sử dụng các tài liệu kỳ diệu tại the sqlite website:

select * from mytable where dob < date('now','-30 years'); 
Các vấn đề liên quan