How to list records with date from the last 10 days?

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

Does this work on PostgreSQL?

169446 次浏览

是的,这在 PostgreSQL 中是可行的(假设列“ 约会”是数据类型 date) 你为什么不试试呢?

标准的 ANSI SQL 格式如下:

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

我更喜欢这种格式,因为它使事情更容易阅读(但它是相同的 current_date - 10)。

我会检查数据类型。

Current _ date 有“ date”数据类型,10是数字,Table.date-您需要查看您的表。

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

你也可以使用:

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

只是泛化查询,如果您想使用任何给定的日期而不是当前日期:

SELECT Table.date
FROM Table
WHERE Table.date > '2020-01-01'::date - interval '10 day'

建议的答案似乎已经解决了问题。但是作为附加,我建议使用 PostgreSQL 的 NOW ()函数。

SELECT Table.date
FROM Table
WHERE date > now() - interval '10' day;

此外,您甚至可以指定的时区,这可以真正方便。

NOW () AT TIME ZONE 'Europe/Paris'

从 Postgres 9.4开始,你可以使用 AGE 函数:

SELECT Table.date FROM Table WHERE AGE(Table.date) <= INTERVAL '10 day';