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

BigQuery中DATETIME字符串转换为指定日期、年月格式的实现方法

问题原因

你现有代码的错误出在第二个PARSE_DATE逻辑:原日期字符串前10位才是完整的dd/mm/YYYY格式内容,取前7位得到的是不完整的日期片段,无法匹配%d/%m/%Y的解析规则,会直接报错。

正确写法

你不需要重复解析字符串,先把完整的日期部分解析为DATE类型,再基于该值格式化出你需要的两种输出即可。

如果你用的是BigQuery(匹配你用的PARSE_DATE语法):

-- OUTPUT1:DATE类型的2019-12-17,需要字符串格式的话可外层套FORMAT_DATE('%Y-%m-%d', ...)
PARSE_DATE('%d/%m/%Y', LEFT(COMPLETED_DATE, 10)) AS COMPLETED_DATE,
-- OUTPUT2:字符串类型的YYYYMM格式
FORMAT_DATE('%Y%m', PARSE_DATE('%d/%m/%Y', LEFT(COMPLETED_DATE, 10))) AS CALENDAR_MONTH

如果要避免字符串截取的潜在误差,也可以直接解析完整的带时间的字符串:

-- 先解析完整的12小时制DATETIME,再按需转换
DATE(PARSE_DATETIME('%d/%m/%Y %r', COMPLETED_DATE)) AS COMPLETED_DATE,
FORMAT_DATETIME('%Y%m', PARSE_DATETIME('%d/%m/%Y %r', COMPLETED_DATE)) AS CALENDAR_MONTH

如果你用的是MySQL:

STR_TO_DATE(LEFT(COMPLETED_DATE, 10), '%d/%m/%Y') AS COMPLETED_DATE,
DATE_FORMAT(STR_TO_DATE(LEFT(COMPLETED_DATE, 10), '%d/%m/%Y'), '%Y%m') AS CALENDAR_MONTH

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 10:30:02