Как перечислить записи с датой за последние 10 дней?


SELECT Table.date FROM Table WHERE date > current_date - 10;

это работает на PostgreSQL?

5 55

5 ответов:

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

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

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

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

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 имеет тип данных "дата", 10-это число и таблица.дата - вам нужно посмотреть на свой стол.

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

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