我使用的是PostreSQl服务器,必须获得按日期分组的数据(即时间戳的一部分)。(按月、年或周分组),因此我使用的是Extract(year from timestamp)函数,但我在Postgresql文档中看到,也有一个函数date_part('year',timestamp)也可以这样做。在这里,我混淆了我必须使用的函数,以及哪个函数是有效的。此外,请告诉我,如果有另一个好的方式来获得数据摸索的日期部分。
发布于 2016-07-18 19:56:38
他们俩是一样的。
实际上,extract()会被重写为date_part() --检查执行计划,您将看到。
extract()符合SQL标准,date_part()是一个特定于Postgres的查询。当其中一个被转换为另一个时,绝对没有性能上的差别。如果您喜欢编写标准SQL,请坚持使用extract()。
更新2021-12-16
从Postgres 14开始,情况不再是这样,现在的实现是不同的:
发布说明状态:
将
EXTRACT()更改为返回数字类型,而不是返回float8 (Peter )。这避免了在某些用法中丢失精度的问题。旧的行为仍然可以通过使用旧的基础函数date_part()来获得。
发布于 2018-06-07 05:13:04
https://stackoverflow.com/questions/38442340
复制相似问题