如何列出过去10天的日期记录?

nun*_*nos 75 sql postgresql

SELECT Table.date FROM Table WHERE date > current_date - 10;
Run Code Online (Sandbox Code Playgroud)

这适用于PostgreSQL吗?

a_h*_*ame 155

是的,这在PostgreSQL中有效(假设列" date "是数据类型date)为什么不试试呢?

标准ANSI SQL格式为:

SELECT Table.date 
FROM Table 
WHERE date > current_date - interval '10' day;
Run Code Online (Sandbox Code Playgroud)

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

  • @ user2694306:`interval '10 day'`是Postgres语法.`interval'10'day`是基于SQL标准的语法,也是Postgres支持的语法 (3认同)
  • 只需注意:在Redshift上,@ user2694306的公式适用:间隔“ 10天”。间隔“ 10”天不适用于Redshift。 (2认同)

bra*_*ers 23

http://www.postgresql.org/docs/current/static/functions-datetime.html显示了可用于处理日期和时间(和间隔)的运算符.

所以你要

SELECT "date"
FROM "Table"
WHERE "date" > (CURRENT_DATE - INTERVAL '10 days');
Run Code Online (Sandbox Code Playgroud)

上面的操作符/函数详细记录:


nib*_*aAS 9

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

SELECT Table.date 
FROM Table 
WHERE date > now() - interval '10' day;
Run Code Online (Sandbox Code Playgroud)

此外,您甚至可以指定时区,这非常方便。

NOW () AT TIME ZONE 'Europe/Paris'
Run Code Online (Sandbox Code Playgroud)


Uy *_*ang 9

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

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


Hig*_*lar 5

根据我的测试(和PostgreSQL dox),我的理解是引号需要与其他答案不同,并且还应包括“ day”,如下所示:

SELECT Table.date
  FROM Table 
  WHERE date > current_date - interval '10 day';
Run Code Online (Sandbox Code Playgroud)

这里展示(您应该可以在任何Postgres db上运行它):

SELECT DISTINCT current_date, 
                current_date - interval '10' day, 
                current_date - interval '10 days' 
  FROM pg_language;
Run Code Online (Sandbox Code Playgroud)

结果:

2013-03-01  2013-03-01 00:00:00 2013-02-19 00:00:00
Run Code Online (Sandbox Code Playgroud)