2016-02-29 182 views
2

我只需要查看表格中当前的年份行。Postgresql查询当前年份

是否有可能过滤一个时间戳列只有当前年份参数,是否有一些函数可以返回此值?

SELECT * FROM mytable WHERE "MYDATE" LIKE CURRENT_YEAR 
+1

看看CURRENT_TIMESTAMP,然后在其上使用date_part ... http://www.postgresql.org/docs/current/static/functions-datetime.html –

回答

15

在PostgreSQL,你可以使用这个:

SELECT * FROM mytable WHERE date_part('year', mydate) = date_part('year', CURRENT_DATE); 

的date_part数功能适用于所有的PostgreSQL从目前的下跌释放到7.1(至少)。

+3

请注意,该查询将非常慢。更好的办法是做mydate> = date_trunc('year',current_date)和mydate

+0

非常感谢那个提示!任何改进都非常感谢。我试图通过一些测量来证实你写的东西。我对包含大约200K条记录,总共大约50列,并且有9个不同列的日期或时间戳记类型的表格进行了测试。根据色谱柱的不同,选择的记录数从500到30K不等。它把你的查询延长了10%。最好的结果是接近水平。当然,我遵循统计调查的规则。我想你多次尝试过。有人可以提出她或他自己的测量? – MyBrainHurts

-2
SELECT * FROM mytable WHERE myYear = YEAR(CURDATE()) 

上面的代码适用于SQL!

+1

它不适用于postgresql –