我需要一个小帮助,我有一个日期字段,它在列COL1中的格式如下
COL1
yyyy-MM-dd
dd-MMM-yy
ddMMMYYYY
我得到的查询是
case WHEN ("COL1" like '%-%') THEN to_localdate('yyyy-MM-dd', "COL1")
WHEN ("COL1" like '%-%') THEN to_localdate('dd/MMM/yy', "COL1")
ELSE to_localdate('ddMMMyyyy', "COL1") END AS COL1
我不确定如何处理我的case语句中的dd- my yy字段。
谢谢,
注意:我正在使用Oracle并在denodo上运行查询。但这只是SQL case语句。因此,它应该适用于所有地方。
发布于 2021-05-18 15:13:41
假设该列包含有效的格式化日期,请使用代表单个字符的_
通配符:
CASE
WHEN ("COL1" LIKE '____-__-__') THEN to_localdate('yyyy-MM-dd', "COL1")
WHEN ("COL1" like '__/___/__') THEN to_localdate('dd/MMM/yy', "COL1")
ELSE to_localdate('ddMMMyyyy', "COL1")
END AS COL1
发布于 2021-05-18 15:11:50
您可以使用regexp_like()
。我想这就是逻辑:
(case when regexp_like('^[0-9]{4}-[0-9]{2}-[0-9]{2}$'
then to_localdate('yyyy-MM-dd', COL1)
when regexp_like('^[0-9]{2}-[a-zA-Z]{3}-[0-9]{2}$'
then to_localdate('dd-MMM-rr', COL1)
when regexp_like('^[0-9]{2}[a-zA-Z]{3}[0-9]{2}$'
then to_localdate('ddMMMrr', COL1)
end)
https://stackoverflow.com/questions/67588967
复制相似问题