我正在使用PostreSQl服务器并且必须获取按时间戳的日期部分分组的数据(即按月或按年或按周分组),所以我使用Extract(year from timestamp)
函数,但我在Postgresql文档中看到那里也是一个函数date_part('year',timestamp)
也可以做同样的事情。在这里我混淆了我必须使用哪个功能以及哪个功能将是高效的。另请告诉我是否还有另一种通过日期部分获取数据的好方法。
答案 0 :(得分:6)
他们都是一样的。
事实上extract()
被重新写入date_part()
- 检查执行计划,你会看到。
extract()
符合SQL标准,date_part()
是Postgres特定的查询。当一个人转换到另一个人时,绝对没有性能差异。如果您更喜欢编写标准SQL,请坚持extract()
答案 1 :(得分:3)
我引用Postgresql.org的答案
块引用 EXTRACT语法最终作为对内部date_part(...)的调用 功能。如果SQL-portability不是问题,请调用date_part() 直接应该更快一点。