Sql 如何列出最近10天的日期记录?
这在PostgreSQL上有效吗?是,这在PostgreSQL中有效(假设“日期”列的数据类型为Sql 如何列出最近10天的日期记录?,sql,postgresql,Sql,Postgresql,这在PostgreSQL上有效吗?是,这在PostgreSQL中有效(假设“日期”列的数据类型为date) 你为什么不试试呢 标准ANSI SQL格式为: SELECT Table.date FROM Table WHERE date > current_date - 10; 我更喜欢这种格式,因为它使事情更容易阅读(但它与当前日期-10相同)。我会检查数据类型 当前日期具有“日期”数据类型,10是一个数字,Table.date-您需要查看您的表。显示了可用于处理日期和时间(以及间隔)的
date
)
你为什么不试试呢
标准ANSI SQL格式为:
SELECT Table.date FROM Table WHERE date > current_date - 10;
我更喜欢这种格式,因为它使事情更容易阅读(但它与当前日期-10相同)。我会检查数据类型 当前日期具有“日期”数据类型,10是一个数字,Table.date-您需要查看您的表。显示了可用于处理日期和时间(以及间隔)的运算符 所以你想要
SELECT Table.date
FROM Table
WHERE date > current_date - interval '10' day;
详细记录了上述操作员/功能:
SELECT "date"
FROM "Table"
WHERE "date" > (CURRENT_DATE - INTERVAL '10 days');
此处演示(您应该能够在任何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';
建议的答案似乎已经解决了这些问题。但作为补充,我建议使用PostgreSQL的NOW()函数
SELECT Table.date
FROM Table
WHERE Table.date > '2020-01-01'::date - interval '10 day'
此外,你甚至可以指定时区,这非常方便
SELECT Table.date
FROM Table
WHERE date > now() - interval '10' day;
事实上,我没注意到布拉德利的答案是正确的。无论如何,我会把我的留在这里,作为正确方法的证明。接受的答案是错误的(至少对于我正在运行的Postgre版本),查询应该是:选择Table.date FROM Table WHERE date>current_date-interval“10天”@user2694306:
间隔“10天”
是Postgres语法interval'10'day
是基于SQL标准的语法,Postgresinterval也支持该语法。实际上,从今天算起,10天可以给你11天的时间。@DavidHe:这和原来的答案是一样的。它使用的是10
,而不是9
,只是一个注释:在红移时,@user2694306的公式起作用:间隔“10天”。间隔“10”天对红移不起作用。间隔“10”天和当前“10”天之间的日期之间的必须首先具有最低值,因此这将正确执行,因为选择Table.date FROM Table,其中当前\u日期-间隔“10天”和当前\u日期之间的日期代码>
SELECT Table.date
FROM Table
WHERE date > now() - interval '10' day;
NOW () AT TIME ZONE 'Europe/Paris'