我有一列从电子邮件内容中提取的字符串。字符串的格式为:-
Tuesday 12th March 2019
我可以使用 split_part 删除星期二(包括“day”在内的任何内容都被删除),但这对于当月的那一天来说要困难得多。如果“th”(或“rd”或“st”)从当月的某一天开始消失,我可以将其转换为日期,但我不能完全到达那里。
任何建议都将不胜感激。
非常感谢,
巴里
你能试试这个:
date_parse('Tuesday 12th March 2019','%W %D %M %Y')
根据 prestosql 文档是否是最新的,这可能不起作用,因为据说:
警告 当前不支持以下说明符:%D %U %u %V %w %X
编辑:除了戈登的回答你可以尝试使用:
date_parse(regexp_replace('Tuesday 12th March 2019','(\d+)((th|rd|nd|st) )','$1 '),'%W %d %M %Y')
后缀的数量是有限的,那么蛮力方法怎么样:
date_parse(replace(replace(replace(replace(substr(str, position(' ' in str) + 1
), 'st', ''
), 'nd', ''
), 'rd', ''
), 'th'),
'%d %M %Y'
)
date_parse()
如果支持它会简单得多%D
,但显然它没有。
对于任何有兴趣的人,我都听取了上述两位用户的建议,这帮助我找到了解决方案。最后一段代码如下所示:-
date(date_parse(trim(regexp_replace(split_part(split_part(split_part( my_data
, split_here
,2),' split_here_2
,1), split_here_3
,2),'(\d+)((th|rd|nd|st))','$1') ),'%e %M %Y'))
返回: -
2018-11-04
2019-04-06
2018-11-02
2019-09-19
2019-07-12
2018-11-04
2018-09-29
2018-10-19
2018-11-02
再次感谢您的帮助!!