如何将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
相关产品推荐
相关产品推荐

