代码之家  ›  专栏  ›  技术社区  ›  Felipe Morales

使用混合日期格式的HANA中的to\u日期

  •  0
  • Felipe Morales  · 技术社区  · 6 年前

    如果原点中有不同的日期格式,您可以做什么?

    我有一个案例,我们正在使用 to_date 函数从表中获取信息,但我收到一个错误,因为某些记录具有日期格式 YYYY-DD-MM 而不是 YYYY-MM-DD

    如何对此应用统一的解决方案?

    2 回复  |  直到 6 年前
        1
  •  2
  •   Lars Br.    6 年前

    为了处理这种情况(任意文本应转换为结构化日期值),我可能会使用正则表达式。

    这样,您就可以选择适合您想要支持的格式的记录集,并对这些记录执行类型转换。

    例如:

    create column table date_vals (dateval nvarchar (4000), date_val date)
    
    insert into date_vals values ('2018-01-23', NULL);
    insert into date_vals values ('12/23/2016', NULL);
    
        select dateval, to_date(dateval, 'YYYY-MM-DD') as SQL_DATE
        from date_vals
        where 
            dateval like_regexpr '[[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2}'
    
        union all
    
        select dateval, to_date(dateval, 'MM/DD/YYYY') as SQL_DATE
        from date_vals
        where 
            dateval like_regexpr '[[:digit:]]{2}/[[:digit:]]{2}/[[:digit:]]{4}';
    

    这种方法还提供了一个很好的选项来检查不匹配的记录,并可能提出其他所需的模式。

        2
  •  0
  •   Abdel Dadouche    6 年前

    为什么不在选择要测试不同正则表达式的位置时使用case,然后使用to\u日期以正确的格式返回日期。

    这将避免使用union all和2个select语句。

    您可以在附加的联合中添加更多的“格式”,而无需更多的“选择”。

    除非like\u regexpr只在where子句中工作(我必须承认我从未尝试过该函数)。