SELECT Table.date FROM Table WHERE date > current_date - 10;
Это работает на PostgreSQL?
Ответы:
Да, это работает в 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):
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;