Postgresql查询当前年份

use*_*318 7 sql postgresql

我只需要查看表中当前年份的行数.

是否可以仅通过当前年份参数过滤时间戳列,是否有某些函数可以返回此值?

SELECT * FROM mytable WHERE "MYDATE" LIKE CURRENT_YEAR
Run Code Online (Sandbox Code Playgroud)

MyB*_*rts 26

在PostgreSQL中你可以使用这个:

SELECT * FROM mytable WHERE date_part('year', mydate) = date_part('year', CURRENT_DATE);
Run Code Online (Sandbox Code Playgroud)

date_part函数在所有PostgreSQL版本中都可用,从当前下至7.1(至少).

  • 请注意,该查询将非常慢.更好的想法是做mydate> = date_trunc('year',current_date)和mydate <date_trunc('year',current_date + interval'1 year') (3认同)
  • 非常感谢您的提示!任何改进都非常感激。我试图通过一些测量来证实你所写的内容。我对一个包含大约 200K 记录的表进行了测试,总共大约 50 列,并且有 9 个不同的日期或时间戳类型列。根据列的不同,选择的记录数从 500 到 30K 不等。您的查询时间延长了 10%。最好的结果是接近水平。当然,我遵循统计调查的规则。我想你自己也尝试过很多次了。有人可以提出她或他自己的测量方法吗? (2认同)

Kev*_*mán 19

这已经很老了,但现在你可以这样做:

SELECT date_part('year', now()); -> 2020
Run Code Online (Sandbox Code Playgroud)

您可以传递任何时间戳来代替now有关文档的更多信息