extract() 是一个用于检索日期或时间值元素的系统函数。
extract() 一直存在于 PostgreSQL 中。
用法
PostgreSQL 14 及更高版本
extract ( field from timestamp ) → numeric
extract ( field from interval ) → numeric
PostgreSQL 13 及更早版本
extract ( field from timestamp ) → double precision
extract ( field from interval ) → double precision
变更历史
- PostgreSQL 14
- PostgreSQL 9.6
- 对无限日期时间的处理得到改进 (提交 647d87c5)
- 当请求的字段是单调递增的字段时(例如
year、epoch),则根据情况返回infinity或-infinity - 在其他情况下返回
NULL - 如果提供了无效的单位名称,则抛出
ERROR
- 当请求的字段是单调递增的字段时(例如
- 对无限日期时间的处理得到改进 (提交 647d87c5)
示例
extract() 的基本用法示例
postgres=# SELECT extract('year' FROM now());
extract
---------
2021
(1 row)
尝试提取无效的时区单位
postgres=# SELECT extract('foo' FROM now());
ERROR: timestamp with time zone units "foo" not recognized
参考资料
- PostgreSQL 文档: 日期/时间函数
- PostgreSQL 文档: EXTRACT, date_part
