PostgreSQL,检查相对于"今天"的日期

Jos*_*eph 80 sql postgresql

想知道是否有人可以帮助一些Postgres.我有一个表有一个名为mydatepostgres日期类型的列.我想做的事情如下:

SELECT * FROM MyTable WHERE mydate > [Today-1year]
Run Code Online (Sandbox Code Playgroud)

我之前从未使用过Postgres,我确信我只需要知道一些函数的名称 - 我很乐意自己查阅引用.谁能指出我正确的方向?

谢谢!

Pau*_*lin 139

select * from mytable where mydate > now() - interval '1 year';
Run Code Online (Sandbox Code Playgroud)

  • 请注意,“now()”是一个时间戳,因此该范围也仅包括一年前的部分时间和今天的部分时间。如果您想过滤全天,请按照 Alex Howansky 的建议投射 `now()::date` 。 (3认同)
  • @niid 它是不带括号的“current_date”。https://www.postgresql.org/docs/current/functions-datetime.html#FUNCTIONS-DATETIME-CURRENT (3认同)

Ale*_*sky 59

我想这会做到:

SELECT * FROM MyTable WHERE mydate > now()::date - 365;
Run Code Online (Sandbox Code Playgroud)

  • 请注意,与'间隔'1年'不同,这不会尊重闰年.这可能不是你的问题,但如果是,请使用我的答案. (9认同)

小智 9

这应该给你当前日期减去1年:

select now() - interval '1 year';
Run Code Online (Sandbox Code Playgroud)


Doc*_*Doc 6

您还可以使用该age()功能进行检查

select * from mytable where age( mydate, now() ) > '1 year';

age() 将返回一个区间。

例如age( '2015-09-22', now() )将返回-1 years -7 days -10:56:18.274131

查看postgresql 文档