如何从SQL中提取年份或月份:EXTRACT与日期函数用法

张开发
2026/4/11 6:27:36 15 分钟阅读

分享文章

如何从SQL中提取年份或月份:EXTRACT与日期函数用法
PostgreSQL中EXTRACT(YEAR FROM date)需确保date为DATE或TIMESTAMP类型字符串须先转类型如col::DATE时区、索引及函数使用需注意。EXTRACT(YEAR FROM date) 在 PostgreSQL 里怎么写才不报错PostgreSQL 中 EXTRACT 是标准写法但必须配合 TIMESTAMP 或 DATE 类型字段不能直接对字符串用。常见错误是传入 2023-05-12 这种文本而没转类型。正确姿势先用 CAST(col AS DATE) 或 col::DATE 转类型再 EXTRACT(YEAR FROM col::DATE)如果字段是 TIMESTAMP WITH TIME ZONEEXTRACT 默认按服务器时区算年份跨时区业务要小心EXTRACT(MONTH FROM ...) 返回的是 1–12 的整数不是字符串别指望它自动补零性能上对未索引的日期字段做 EXTRACT 会强制全表扫描查得勤就考虑加函数索引CREATE INDEX idx_orders_year ON orders ((EXTRACT(YEAR FROM order_date)))MySQL 用 YEAR() 和 MONTH() 函数要注意什么MySQL 不支持标准 EXTRACT8.0 才加但日常还是用原生函数多YEAR() 看似简单其实坑在隐式类型转换上。字段是 VARCHAR 存的日期比如 2023/05/12YEAR(col) 会尝试解析但遇到 2023-13-01 这种非法值就返回 0不报错也不警告MONTH() 对 NULL 返回 NULL但对空字符串 会返回 0和 YEAR() 行为不一致想取“2023-05”这种格式别拼字符串用 DATE_FORMAT(col, %Y-%m) 更稳CONCAT(YEAR(col), -, MONTH(col)) 遇到月份5 会变成 2023-5少个零SQLite 怎么从 date 字段里拿年份——没有 EXTRACT 也能干SQLite 没 EXTRACT也没 YEAR()靠 strftime() 字符串截取但得确认你的 date 是标准格式。 稿定AI 拥有线稿上色优化、图片重绘、人物姿势检测、涂鸦完善等功能

更多文章