date_part()
是一个系统函数,用于检索日期或时间戳的元素,类似于 extract()
。
date_part()
添加于 PostgreSQL 6.1。
用法
date_part(field
text
,source
date
) → double precision
date_part(field
text
,source
interval
) → double precision
date_part(field
text
,source
timestamp
) → double precision
date_part(field
text
,source
timestamp with time zone
) → double precision
date_part()
与SQL标准的 extract()
函数的功能基本相同,最初是为了提供 Ingres 兼容性。从 PostgreSQL 14 开始,建议使用 extract()
,因为该函数现在返回 numeric
类型,而 date_part()
和 extract()
(在 PostgreSQL 14 之前) 返回的双精度值在某些情况下可能会导致精度损失。
更改历史
- PostgreSQL 6.1
- 添加 (提交 2ab34dfe)
示例
date_part()
的用法示例
postgres=# SELECT date_part('year', now()); date_part ----------- 2021 (1 row)
在 PostgreSQL 14 及更高版本中,date_part()
返回的值可能与 extract()
返回的值不同。
postgres=# WITH now AS ( SELECT NOW() AS now ) SELECT date_part('epoch', now.now), extract('epoch' FROM now.now) FROM now; date_part | extract ------------------+------------------- 1637913804.90921 | 1637913804.909210 (1 row)
参考文献
- PostgreSQL文档: 日期/时间函数
- PostgreSQL文档: EXTRACT, date_part