首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复杂日期列case语句

复杂日期列case语句
EN

Stack Overflow用户
提问于 2021-05-18 23:05:44
回答 2查看 39关注 0票数 1

我需要一个小帮助,我有一个日期字段,它在列COL1中的格式如下

代码语言:javascript
复制
COL1

yyyy-MM-dd
dd-MMM-yy
ddMMMYYYY

我得到的查询是

代码语言:javascript
复制
    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语句。因此,它应该适用于所有地方。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-18 23:13:41

假设该列包含有效的格式化日期,请使用代表单个字符的_通配符:

代码语言:javascript
复制
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
票数 3
EN

Stack Overflow用户

发布于 2021-05-18 23:11:50

您可以使用regexp_like()。我想这就是逻辑:

代码语言:javascript
复制
(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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67588967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档