SELECT Table.date FROM Table WHERE date > current_date - 10;
Does this work on PostgreSQL?
是的,这在 PostgreSQL 中是可行的(假设列“ 约会”是数据类型 date) 你为什么不试试呢?
date
标准的 ANSI SQL 格式如下:
SELECT Table.date FROM Table WHERE date > current_date - interval '10' day;
我更喜欢这种格式,因为它使事情更容易阅读(但它是相同的 current_date - 10)。
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';