首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从时间戳提取(Date_part)函数与PostgreSQL (‘年份’,时间戳)的区别

从时间戳提取(Date_part)函数与PostgreSQL (‘年份’,时间戳)的区别
EN

Stack Overflow用户
提问于 2016-07-18 17:05:02
回答 2查看 11K关注 0票数 20

我使用的是PostreSQl服务器,必须获得按日期分组的数据(即时间戳的一部分)。(按月、年或周分组),因此我使用的是Extract(year from timestamp)函数,但我在Postgresql文档中看到,也有一个函数date_part('year',timestamp)也可以这样做。在这里,我混淆了我必须使用的函数,以及哪个函数是有效的。此外,请告诉我,如果有另一个好的方式来获得数据摸索的日期部分。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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()来获得。

票数 30
EN

Stack Overflow用户

发布于 2018-06-07 05:13:04

我引用Postgresql.org的答案

区块引号提取语法作为对内部date_part(.)的调用结束函数。如果SQL-可移植性不是问题,那么直接调用date_part()应该会更快一些。

参考链接

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38442340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档