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

SQL中如何根据另一列的值设置日期列数据

需求说明

现有一张包含Col1、Col2两个字段的SQL表,初始数据如下:

Col1      Col2
202205    NULL
202204    NULL
202103    NULL

其中Col1存储YYYYMM格式的年月数值,Col2初始值均为NULL,需要根据Col1取值填充Col2,转换为对应当月1日的标准日期格式,期望结果如下:

Col1    Col2
202205  2022-05-01
202204  2022-04-01
202103  2021-03-01
实现方案

不同数据库的日期处理函数存在差异,可根据你使用的数据库选择对应语句,执行前把语句里的你的表名替换为实际表名即可:

  • MySQL / MariaDB
    拼接年月和日值01后通过字符串转日期函数生成目标日期:
    UPDATE 你的表名
    SET Col2 = STR_TO_DATE(CONCAT(Col1, '01'), '%Y%m%d');
    
  • SQL Server
    拆分年、月字段后通过日期构造函数生成当月1日:
    UPDATE 你的表名
    SET Col2 = DATEFROMPARTS(LEFT(Col1,4), RIGHT(Col1,2), 1);
    
  • PostgreSQL / Oracle
    拼接字符串后转日期即可:
    -- PostgreSQL
    UPDATE 你的表名
    SET Col2 = TO_DATE(Col1 || '01', 'YYYYMMDD');
    
    -- Oracle
    UPDATE 你的表名
    SET Col2 = TO_DATE(Col1 || '01', 'YYYYMMDD');
    

如果不需要持久化更新表数据,仅在查询时返回转换后的结果,可以把更新语句替换为查询语句,以MySQL为例:

SELECT Col1, STR_TO_DATE(CONCAT(Col1, '01'), '%Y%m%d') AS Col2 FROM 你的表名;

内容的提问来源于stack exchange,提问作者codejüngling

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 07:51:28