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

如何将提取的年、月拼接为yyyy-mm-01格式的datetime类型

解决方案

你之前的语句问题出在两个核心点:

  • 拼接顺序完全错误,日期格式要求年-月-日,你把日、月、年的顺序搞反了
  • 01未加引号,会被当作数字1处理,拼接后格式完全不符合日期规范

方法一:直接利用原字段拼接(最简便)

既然原字段已经是yyyy-mm格式的char(8),无需单独提取年和月,直接拼接'-01'再转换为日期类型即可:

CAST(CONCAT(cc.your_original_date_col, '-01') AS DATE) AS ref_date

将your_original_date_col替换为你实际使用的字段名即可。

方法二:用已提取的year和month拼接

如果必须使用已提取好的year和month字段,需严格按照年-月-01的顺序拼接,且确保各部分为字符串格式:

CAST(CONCAT(cc.year, '-', cc.month, '-01') AS DATE) AS ref_date

若year或month是数字类型,需先转换为字符串:

CAST(CONCAT(CAST(cc.year AS CHAR(4)), '-', CAST(cc.month AS CHAR(2)), '-01') AS DATE) AS ref_date

关键逻辑

无论哪种方式,最终拼接出的字符串必须是yyyy-mm-dd格式(如2024-05-01),才能被CAST正确转换为日期类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 17:12:11