首页/数据/SQL 速查/EXTRACT 提取日期字段
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条
函数速查60 条
变更与事务52 条性能与执行计划72 条

EXTRACT 提取日期字段

从日期时间中取出年/月/日/时/分/周等字段:标准写法 EXTRACT(unit FROM expr),MySQL 另有 YEAR()/MONTH() 等简写。

SQL 速查数据更新于 2026-10-12

通用

通用
SELECT EXTRACT(YEAR  FROM o.created_at) AS y,
       EXTRACT(MONTH FROM o.created_at) AS m,
       EXTRACT(DAY   FROM o.created_at) AS d
FROM orders o;

MySQL 简写 / PostgreSQL 扩展

MySQL 简写 / PostgreSQL 扩展
-- MySQL
SELECT YEAR(created_at), MONTH(created_at), DAYOFMONTH(created_at) FROM orders;
-- PostgreSQL
SELECT EXTRACT(QUARTER FROM ts), EXTRACT(ISODOW FROM ts), EXTRACT(EPOCH FROM ts) FROM t;
单位YEAR/MONTH/DAY/HOUR/MINUTE/SECOND/QUARTER/WEEK
PostgreSQL还支持 DOW/ISODOW/DOY/EPOCH;返回 numeric
MySQLEXTRACT 之外可用 YEAR()/MONTH()/DAY()/HOUR() 等函数

易错点

  • EXTRACT(WEEK ...) 的周编码: MySQL 取决于 default_week_format,PostgreSQL 为 ISO 周,跨系统对数前先对齐口径
  • 对列做 EXTRACT 再过滤无法用索引,月度查询改成日期范围条件

数据来源与参考

  • MySQL 8.0 Reference Manual · EXTRACT
  • PostgreSQL Documentation · Date/Time Functions and Operators
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌