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

to_date in HANA with mixed date formats

如果源中的日期格式不同怎么办?

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

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

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

这样您就可以 select 符合您希望支持的格式的记录集,并对这些记录执行类型转换。

例如:

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

此方法还提供了一个很好的选项来查看 non-matching 记录并可能提出其他所需的模式。

为什么不在 select 中使用大小写来测试不同的正则表达式,然后使用 to_date 到 return 格式正确的日期。

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

您可以在附加联合中添加更多 "format" 而无需更多 "select"。

除非 like_regexpr 仅在 where 子句中有效(我不得不承认我从未尝试过该功能)。