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

如何将surv_year与文本型surv_month拼接为YYYYMM格式?

实现文本月份转数字并拼接为YYYYMM格式

当然可以实现,以下是几种主流工具的具体实现方法:

SQL实现

不同数据库的函数略有差异,以下是常见数据库的写法:

MySQL/MariaDB

利用日期转换函数将文本月份转为数字,再与年份拼接:

SELECT 
  CONCAT(
    surv_year,
    LPAD(DATE_FORMAT(STR_TO_DATE(surv_month, '%M'), '%m'), 2, '0')
  ) AS yyyymm
FROM your_table;
  • STR_TO_DATE(surv_month, '%M'):将英文月份名称转为日期对象
  • DATE_FORMAT(..., '%m'):提取日期中的两位数字月份
  • LPAD(..., 2, '0'):确保月份是两位(比如1月转为01)
  • CONCAT():将年份与月份数字拼接成YYYYMM格式

PostgreSQL

方法一:使用日期转换函数

SELECT 
  CONCAT(
    surv_year::TEXT,
    TO_CHAR(TO_DATE(surv_month, 'Month'), 'FM00')
  ) AS yyyymm
FROM your_table;

方法二:用CASE语句直接映射(避免日期函数的大小写/格式问题)

SELECT 
  CONCAT(
    surv_year::TEXT,
    CASE surv_month
      WHEN 'January' THEN '01'
      WHEN 'February' THEN '02'
      WHEN 'March' THEN '03'
      WHEN 'April' THEN '04'
      WHEN 'May' THEN '05'
      WHEN 'June' THEN '06'
      WHEN 'July' THEN '07'
      WHEN 'August' THEN '08'
      WHEN 'September' THEN '09'
      WHEN 'October' THEN '10'
      WHEN 'November' THEN '11'
      WHEN 'December' THEN '12'
    END
  ) AS yyyymm
FROM your_table;

Python实现

用Pandas处理批量数据

import pandas as pd

# 构建示例数据
df = pd.DataFrame({
    'surv_year': [2022, 2022],
    'surv_month': ['January', 'August']
})

# 转换并拼接
df['yyyymm'] = df['surv_year'].astype(str) + pd.to_datetime(df['surv_month'], format='%B').dt.strftime('%m')

print(df)

输出结果:

surv_year surv_month  yyyymm
0       2022    January  202201
1       2022     August  202208

纯Python脚本处理单条数据

# 建立月份映射字典
month_mapping = {
    'January': '01', 'February': '02', 'March': '03',
    'April': '04', 'May': '05', 'June': '06',
    'July': '07', 'August': '08', 'September': '09',
    'October': '10', 'November': '11', 'December': '12'
}

# 示例数据
sample_data = [(2022, 'January'), (2022, 'August')]

# 遍历处理
for year, month in sample_data:
    yyyymm = f"{year}{month_mapping[month]}"
    print(yyyymm)

输出:

202201
202208

Excel实现

假设surv_year在A列,surv_month在B列:

方法一:利用日期函数转换

在C2单元格输入公式,下拉填充:

=A2 & TEXT(DATEVALUE(B2 & " 1"), "mm")
  • DATEVALUE(B2 & " 1"):将月份文本转为具体日期(比如January转为2024/1/1,年份不影响月份提取)
  • TEXT(..., "mm"):提取两位数字月份
  • &:拼接年份与月份

方法二:用LOOKUP函数映射

如果Excel无法识别英文月份,可直接用映射关系:

=A2 & TEXT(LOOKUP(B2, {"January","February","March","April","May","June","July","August","September","October","November","December"}, {1,2,3,4,5,6,7,8,9,10,11,12}), "00")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 05:10:51