答案 0 :(得分:143)
是的,这在PostgreSQL中有效(假设“ date ”列的数据类型为date
)
你为什么不试试呢?
标准ANSI SQL格式为:
SELECT Table.date
FROM Table
WHERE date > current_date - interval '10' day;
我更喜欢这种格式,因为它使事情更容易阅读(但它与current_date - 10
相同)。
答案 1 :(得分:21)
答案 2 :(得分:5)
我对我的测试(以及PostgreSQL dox)的理解是,引号需要与其他答案不同,并且还应包括" day"像这样:
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
答案 3 :(得分:0)
我会检查数据类型。
current_date有“date”数据类型,10是数字,Table.date - 你需要查看你的表。
答案 4 :(得分:0)
你也可以在之间使用:
SELECT Table.date
FROM Table
WHERE date between current_date and current_date - interval '10 day';
答案 5 :(得分:0)
如果要使用任何给定日期而不是当前日期,只需对查询进行概括即可:
SELECT Table.date
FROM Table
WHERE Table.date > '2020-01-01'::date - interval '10 day'
答案 6 :(得分:0)
建议的答案似乎已经解决了问题。但作为补充,我建议使用 PostgreSQL 的 NOW() 函数。
SELECT Table.date
FROM Table
WHERE date > now() - interval '10' day;
此外,您甚至可以指定时区,这非常方便。
NOW () AT TIME ZONE 'Europe/Paris'