date_part() 是一个系统函数,用于从日期或时间戳中检索元素,与 extract() 类似。
date_part() 添加于 PostgreSQL 6.1。
用法
date_part(fieldtext,sourcedate) → double precision
date_part(fieldtext,sourceinterval) → double precision
date_part(fieldtext,sourcetimestamp) → double precision
date_part(fieldtext,sourcetimestamp 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 documentation: EXTRACT, date_part
