如何用Databricks SQL更新日期字段年份(0026改为2026)
问题描述
现有如下结构的表格:
id|week|start_date 1,4, 0026-10-23T00:00:00.000+00:00 2,5, 0026-09-22T00:00:00.000+00:00 3,6, 0026-09-25T00:00:00.000+00:00
需要编写Databricks SQL语句更新start_date字段的年份,将其中的0026替换为2026,最终得到结果:
id|week|start_date 1,4, 2026-10-23T00:00:00.000+00:00 2,5, 2026-09-22T00:00:00.000+00:00 3,6, 2026-09-25T00:00:00.000+00:00
解决方案
根据start_date的存储类型,有两种实现逻辑:
1. 当start_date为字符串类型
直接使用字符串替换函数REPLACE修改年份,同时通过WHERE条件过滤目标行:
UPDATE your_table_name SET start_date = REPLACE(start_date, '0026-', '2026-') WHERE start_date LIKE '0026-%';
- 精准替换字符串开头的
0026-,避免误替换其他位置的相似字符 WHERE条件只处理需要更新的行,提升执行效率
2. 当start_date为日期/时间戳类型
需要先将日期类型转为字符串完成替换,再转回原类型:
UPDATE your_table_name SET start_date = TO_TIMESTAMP(REPLACE(CAST(start_date AS STRING), '0026-', '2026-')) WHERE YEAR(start_date) = 26;
- 用
CAST将日期转为字符串,替换后通过TO_TIMESTAMP转回时间戳类型 - 用
YEAR(start_date) = 26精准过滤出年份为26的行,避免误更新
验证更新结果
执行更新后,可通过以下语句确认结果:
SELECT id, week, start_date FROM your_table_name;
内容的提问来源于stack exchange,提问作者Coder123
相关产品推荐
相关产品推荐

