У меня есть таблица sqlite с датой рождения. Я хотел бы выполнить запрос, чтобы выбрать те записи, возраст которых превышает 30. Я пробовал следующее, но он не работает:
select * from mytable where dob > '1/Jan/1980'
select * from mytable where dob > '1980-01-01'
Можно использовать такую вещь:
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');
Если вы используете Sqlite V3.7.12 или выше
Не используйте date(dateofbirth)
, просто используйте dateofbirth
. Таким образом, ваш запрос будет выглядеть так:
select * from customer where dateofbirth < date('now','-30 years');
Использование магических документов на веб-сайте sqlite:
select * from mytable where dob < date('now','-30 years');
Попробуйте написать с использованием формата даты "ГГГГ-ММ-ДД"
select * from mytable where dob > '1980-01-01'
Более программный способ будет примерно таким:
select * from mytable where datediff(dob, now()) > 30
Вам понадобится найти конкретный синтаксис для sqlite.
select * from mytable where dob > '1980-01-01'
может не работать, но в настоящее время эта команда отлично работает на sqlite3
.
date(dateofbirth)
, простоdateofbirth
было бы хорошо.date(field) > date('2018-05-20')
иfield > '2018-05-20'
возвращают разные результаты для меня, поэтому использование функцииdate()
- единственный способ это работает правильно для меня, если поле не Date, а DateTime .