复杂日期列 case 语句
Complex date column case statement
我需要一点帮助,我在列 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-MMM-yy 字段。
谢谢,
注意:我在 denodo 上使用 Oracle 和 运行 查询。但这只是 SQL 案例陈述。所以它应该无处不在。
您可以使用 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)
假设该列包含有效的格式化日期,使用代表单个字符的 _
通配符:
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
我需要一点帮助,我在列 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-MMM-yy 字段。
谢谢,
注意:我在 denodo 上使用 Oracle 和 运行 查询。但这只是 SQL 案例陈述。所以它应该无处不在。
您可以使用 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)
假设该列包含有效的格式化日期,使用代表单个字符的 _
通配符:
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