如何用SQL从日期列提取JAN、FEB格式的月份字符串?
嘿,这个需求挺常见的~不同SQL数据库有不同的内置函数来实现,我给你整理几个主流数据库的写法,你可以对应自己的数据库来用:
提取月份缩写(JAN/FEB格式)的SQL语句
MySQL/MariaDB
使用DATE_FORMAT函数配合格式符%b获取月份缩写,再用UPPER()确保结果是全大写:
SELECT UPPER(DATE_FORMAT(your_date_column, '%b')) AS month_abbr FROM your_table;
如果不需要强制大写,直接用DATE_FORMAT(your_date_column, '%b')会返回首字母大写的缩写(如Jan)
PostgreSQL
用TO_CHAR函数搭配Mon模板生成缩写,再转大写:
SELECT UPPER(TO_CHAR(your_date_column, 'Mon')) AS month_abbr FROM your_table;
SQL Server
直接用DATENAME函数获取月份缩写,再转大写:
SELECT UPPER(DATENAME(month, your_date_column)) AS month_abbr FROM your_table;
Oracle
Oracle的TO_CHAR函数用MON格式模型可以直接返回全大写的月份缩写,一步到位:
SELECT TO_CHAR(your_date_column, 'MON') AS month_abbr FROM your_table;
小提醒
- 要确保你的日期列是日期/时间类型(比如DATE、DATETIME),如果是字符串格式的日期,得先转成日期类型再用上面的函数。比如MySQL里可以用
STR_TO_DATE(your_string_date, '%Y-%m-%d')先转换。 - 部分数据库的函数结果会受语言环境影响,如果返回的不是英文缩写,需要调整会话语言参数,比如Oracle可以执行
ALTER SESSION SET NLS_DATE_LANGUAGE = 'ENGLISH';来切换。
内容的提问来源于stack exchange,提问作者Jonathan Livingston Seagull
相关产品推荐
相关产品推荐

