在HANA中使用混合日期格式进行to_date

时间:2018-04-02 21:11:56

标签: date format hana to-date

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

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

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

2 个答案:

答案 0 :(得分:2)

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

通过这种方式,您可以选择符合您希望支持的格式的记录集,并对这些记录执行类型转换。

例如:

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}';

这种方法也提供了一个很好的选择来审查不匹配的记录,并可能提出额外的必要模式。

答案 1 :(得分:0)

为什么不在select中测试不同正则表达式的情况下使用case,然后使用to_date以正确的格式返回日期。

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

您可以在其他联盟中添加更多“格式”,而无需更多“选择”。

除非like_regexpr仅适用于where子句(我必须承认我从未尝试过该功能)。