Presto如何使用Try_Parse

问题描述 投票:0回答:1

在Presto中,我正在尝试使用给定的[[format将String解析为Date,但是,如果String与格式不匹配,查询将失败。

select date_parse('2020-01-20T16:21:09.346Z', '%Y-%m-%dT%H:%i:%s.%fZ');
我在这里期望的是优美的处理,因此,如果

date_parse

方法将失败,它将返回null或提供的某些默认值我该如何实现?
mysql sql presto
1个回答
0
投票
此链接解决了问题。

https://cloudjunkie.io/all-articles/2018/3/25/parsing-multiple-date-formats-in-athena#solution

SELECT TestData.FormatId, Coalesce( try(date_parse(TestData.MultiDateCol, '%Y-%m-%d %H:%i:%s')), try(date_parse(TestData.MultiDateCol, '%Y/%m/%d %H:%i:%s')), try(date_parse(TestData.MultiDateCol, '%Y/%m/%d')), try(date_parse(TestData.MultiDateCol, '%d %M %Y')), try(date_parse(TestData.MultiDateCol, '%d %M %Y %H:%i:%s')), try(date_parse(TestData.MultiDateCol, '%d/%m/%Y %H:%i:%s')), try(date_parse(TestData.MultiDateCol, '%d-%m-%Y %H:%i:%s')) ) as DateConvertedToTimestamp, TestData.MultiDateCol FROM ( SELECT '2020-01-01 13:01:01' AS MultiDateCol, 'Format 1' AS FormatId UNION ALL SELECT '2020/01/02 13:01:02', 'Format 2' UNION ALL SELECT '2020/01/03', 'Format 3' UNION ALL SELECT '04 JAN 2020', 'Format 4' UNION ALL SELECT '05 JAN 2020 13:01:05', 'Format 5' UNION ALL SELECT '06/01/2020 13:01:06', 'Format 6' UNION ALL SELECT '07-01-2020 13:01:07', 'Format 7' ) AS TestData ORDER BY TestData.FormatId

© www.soinside.com 2019 - 2024. All rights reserved.