PostgreSQL中EXTRACT(来自时间戳的年份)函数与date_part('year',timestamp)之间的区别

时间:2016-07-18 17:05:03

标签: postgresql

我正在使用PostreSQl服务器并且必须获取按时间戳的日期部分分组的数据(即按月或按年或按周分组),所以我使用Extract(year from timestamp)函数,但我在Postgresql文档中看到那里也是一个函数date_part('year',timestamp)也可以做同样的事情。在这里我混淆了我必须使用哪个功能以及哪个功能将是高效的。另请告诉我是否还有另一种通过日期部分获取数据的好方法。

2 个答案:

答案 0 :(得分:6)

他们都是一样的。

事实上extract()被重新写入date_part() - 检查执行计划,你会看到。

extract()符合SQL标准,date_part()是Postgres特定的查询。当一个人转换到另一个人时,绝对没有性能差异。如果您更喜欢编写标准SQL,请坚持extract()

答案 1 :(得分:3)

我引用Postgresql.org的答案

  

块引用   EXTRACT语法最终作为对内部date_part(...)的调用   功能。如果SQL-portability不是问题,请调用date_part()   直接应该更快一点。

Reference Link