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

如何在Snowflake中从字符串提取YYYYMMDD格式的年月日

从Snowflake字符串中提取年月日并格式化

针对你给出的示例字符串'IN_2001_02_23_guid',这里提供两种简单高效的解决方案:

方法一:利用SPLIT_PART分割拼接

因为字符串是下划线分隔的固定结构,年、月、日分别是第2、3、4个分割段,直接用SPLIT_PART提取后拼接即可:

SELECT 
    CONCAT(
        SPLIT_PART('IN_2001_02_23_guid', '_', 2),
        SPLIT_PART('IN_2001_02_23_guid', '_', 3),
        SPLIT_PART('IN_2001_02_23_guid', '_', 4)
    ) AS formatted_date;

运行后会返回20010223。如果是处理表中的列数据,把字符串替换成列名即可:

SELECT 
    CONCAT(
        SPLIT_PART(your_column, '_', 2),
        SPLIT_PART(your_column, '_', 3),
        SPLIT_PART(your_column, '_', 4)
    ) AS formatted_date
FROM your_table;

方法二:使用正则表达式提取

如果字符串结构有轻微变化(比如前缀长度不固定),正则表达式更灵活,直接匹配并捕获日期部分:

SELECT 
    REGEXP_REPLACE('IN_2001_02_23_guid', '^.*_(\\d{4})_(\\d{2})_(\\d{2})_.*$', '\\1\\2\\3') AS formatted_date;

正则说明:

  • ^.*_:匹配字符串开头到第一个日期段前的下划线
  • (\\d{4})_(\\d{2})_(\\d{2}):捕获4位年、2位月、2位日
  • _.*$:匹配日期段后的下划线及剩余内容
  • \\1\\2\\3:将捕获的年、月、日拼接成无分隔符的日期串

也可以先提取带下划线的日期段,再移除下划线:

SELECT 
    REPLACE(REGEXP_SUBSTR('IN_2001_02_23_guid', '\\d{4}_\\d{2}_\\d{2}'), '_', '') AS formatted_date;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 05:27:09