You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hive中如何将MM/DD/YYYY格式日期转为英文月份全称

提取日期字符串中的英文全称月份

没问题,我来帮你搞定这个需求!你想从"MM/DD/YYYY"格式的日期字符串里提取英文全称月份,思路用CASE+日期函数完全可行,当然也可以用数据库自带的日期格式化函数更高效,下面给你两种方案:

方案一:用数据库原生日期格式化函数(简洁高效)

不同数据库的函数略有差异,给你几个主流数据库的写法:

MySQL

SELECT 
    ColumnA,
    DATE_FORMAT(STR_TO_DATE(ColumnA, '%m/%d/%Y'), '%M') AS `Column B (Output)`
FROM your_table;
  • STR_TO_DATE(ColumnA, '%m/%d/%Y'):把字符串转成日期类型
  • DATE_FORMAT(..., '%M'):格式化日期为英文全称月份(比如December)

SQL Server

SELECT 
    ColumnA,
    DATENAME(MONTH, CONVERT(DATE, ColumnA, 101)) AS [Column B (Output)]
FROM your_table;
  • CONVERT(DATE, ColumnA, 101):按MM/DD/YYYY格式把字符串转成日期
  • DATENAME(MONTH, ...):提取月份的英文全称

PostgreSQL

SELECT 
    "ColumnA",
    TO_CHAR(TO_DATE("ColumnA", 'MM/DD/YYYY'), 'FMMonth') AS "Column B (Output)"
FROM your_table;
  • TO_DATE("ColumnA", 'MM/DD/YYYY'):字符串转日期
  • TO_CHAR(..., 'FMMonth'):格式化出不带尾随空格的英文全称月份

方案二:结合CASE与日期函数(通用不依赖数据库特性)

如果你想严格用CASE逻辑来实现,先把字符串转成日期提取月份数字,再用CASE映射成英文全称:

SELECT 
    ColumnA,
    CASE 
        WHEN MONTH(STR_TO_DATE(ColumnA, '%m/%d/%Y')) = 1 THEN 'January'
        WHEN MONTH(STR_TO_DATE(ColumnA, '%m/%d/%Y')) = 2 THEN 'February'
        WHEN MONTH(STR_TO_DATE(ColumnA, '%m/%d/%Y')) = 3 THEN 'March'
        WHEN MONTH(STR_TO_DATE(ColumnA, '%m/%d/%Y')) = 4 THEN 'April'
        WHEN MONTH(STR_TO_DATE(ColumnA, '%m/%d/%Y')) = 5 THEN 'May'
        WHEN MONTH(STR_TO_DATE(ColumnA, '%m/%d/%Y')) = 6 THEN 'June'
        WHEN MONTH(STR_TO_DATE(ColumnA, '%m/%d/%Y')) = 7 THEN 'July'
        WHEN MONTH(STR_TO_DATE(ColumnA, '%m/%d/%Y')) = 8 THEN 'August'
        WHEN MONTH(STR_TO_DATE(ColumnA, '%m/%d/%Y')) = 9 THEN 'September'
        WHEN MONTH(STR_TO_DATE(ColumnA, '%m/%d/%Y')) = 10 THEN 'October'
        WHEN MONTH(STR_TO_DATE(ColumnA, '%m/%d/%Y')) = 11 THEN 'November'
        WHEN MONTH(STR_TO_DATE(ColumnA, '%m/%d/%Y')) = 12 THEN 'December'
    END AS `Column B (Output)`
FROM your_table;

注意:如果是SQL Server/PostgreSQL,把STR_TO_DATE(ColumnA, '%m/%d/%Y')换成对应数据库的日期转换函数即可,比如SQL Server用CONVERT(DATE, ColumnA, 101),PostgreSQL用TO_DATE(ColumnA, 'MM/DD/YYYY')。

用你的示例数据测试,两种方案都会得到预期的输出:

ColumnAColumn B (Output)
12/14/2017December
12/11/2017December
2/16/2018February
1/2/2017January

内容的提问来源于stack exchange,提问作者RashItIs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:53:05