Как составить список записей с датой за последние 10 дней? - PullRequest
70 голосов
/ 29 марта 2011
SELECT Table.date FROM Table WHERE date > current_date - 10;

Работает ли это на PostgreSQL?

Ответы [ 5 ]

145 голосов
/ 29 марта 2011

Да, это работает в PostgreSQL (при условии, что столбец " date " имеет тип данных date) Почему бы вам просто не попробовать это?

Стандартный формат ANSI SQL будетbe:

SELECT Table.date 
FROM Table 
WHERE date > current_date - interval '10' day;

Я предпочитаю этот формат, поскольку он упрощает чтение (но он такой же, как current_date - 10).

23 голосов
/ 29 марта 2011

http://www.postgresql.org/docs/current/static/functions-datetime.html показывает операторов, которые вы можете использовать для работы с датами и временем (и интервалами).

Так хочешь

SELECT "date"
FROM "Table"
WHERE "date" > (CURRENT_DATE - INTERVAL '10 days');

Операторы / функции, описанные выше, подробно документированы:

5 голосов
/ 01 марта 2013

Мое понимание из моего тестирования (и 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
0 голосов
/ 15 марта 2016

Вы также можете использовать между:

SELECT Table.date
  FROM Table 
  WHERE date between current_date and current_date - interval '10 day';
0 голосов
/ 29 марта 2011

Я бы проверил типы данных.

current_date имеет тип данных "date", 10 - это число, а Table.date - вам нужно взглянуть на вашу таблицу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...