Відповіді:
Так, це працює в PostgreSQL (припускаючи, що стовпець " дата " має тип даних date
) Чому б вам просто не спробувати?
Стандартним форматом ANSI SQL буде:
SELECT Table.date
FROM Table
WHERE date > current_date - interval '10' day;
Я віддаю перевагу такому формату, оскільки це полегшує читання (але це те саме, що і current_date - 10
).
interval '10 day'
це синтаксис Postgres. interval '10' day
є синтаксисом, заснованим на стандарті SQL, а також підтримується Postgres
10
, а не9
http://www.postgresql.org/docs/current/static/functions-datetime.html показує оператори, яких можна використовувати для роботи з датами та часом (та інтервалами).
Так ти хочеш
SELECT "date"
FROM "Table"
WHERE "date" > (CURRENT_DATE - INTERVAL '10 days');
Оператори / функції, описані вище, детально задокументовані:
Як я зрозумів із мого тестування (і PostgreSQL dox ), котирування потрібно робити інакше, ніж інші відповіді, і вони також повинні включати "день", як це:
SELECT Table.date
FROM Table
WHERE date > current_date - interval '10 day';
Продемонстровано тут (ви зможете запустити це на будь-якому Postgres db):
SELECT DISTINCT current_date,
current_date - interval '10' day,
current_date - interval '10 days'
FROM pg_language;
Результат:
2013-03-01 2013-03-01 00:00:00 2013-02-19 00:00:00
Я б перевірив типи даних.
current_date має тип даних "date", 10 - це число, а Table.date - вам потрібно переглянути вашу таблицю.
ви також можете використовувати між ними:
SELECT Table.date
FROM Table
WHERE date between current_date and current_date - interval '10 day';
between
має бути з найменшим значенням, тому це буде правильно зроблено як SELECT Table.date FROM Table WHERE date between current_date - interval '10 day' and current_date;