如何将varchar(1-Jan-2020)中的日期转换为DB2SQL中的日期类型?

如何将varchar(1-Jan-2020)中的日期转换为DB2SQL中的日期类型?,sql,date,db2,varchar,Sql,Date,Db2,Varchar,我的db2表中有一列日期,如下所示 4-Jan-2020 7-Sep-2020 7-Dec-2020 我想把它们转换成 2020-01-04 2020-09-07 2020-12-07 分别。我如何做到这一点? 谢谢。对于最新版本的DB2,请使用更新: 选择日期(截止日期(日期列,'DD-MON-YYYY')) 从你的桌子上; 数据: 将您的表作为( 选择“2020年1月4日”作为日期 选择“2020年9月7日”UNION ALL 选择“2020年12月7日” ) 你的专栏数据类型是-da

我的db2表中有一列日期,如下所示

4-Jan-2020
7-Sep-2020
7-Dec-2020
我想把它们转换成

2020-01-04
2020-09-07
2020-12-07
分别。我如何做到这一点?
谢谢。

对于最新版本的DB2,请使用
更新:

选择日期(截止日期(日期列,'DD-MON-YYYY'))
从你的桌子上;
数据:

将您的表作为(
选择“2020年1月4日”作为日期
选择“2020年9月7日”UNION ALL
选择“2020年12月7日”
)

你的专栏数据类型是-date吗?不,它是varchar
date()
是相当多余的。@GordonLinoff有趣的是,如果你在这个网站上到处寻找类似的问题,许多被接受的答案似乎都是将对
到日期的调用与另一个对
date()
的转换结合起来的。不清楚他们为什么要这样做。令人困惑的是,
TO_DATE
在Db2中不返回
日期
,而是返回
时间戳
,因此将结果强制转换为日期通常是个好主意。这种奇怪的原因是(我相信)TO_DATE作为Oracle兼容性的一部分进入Db2,并且Oracle中的
TO_DATE
返回一个日期+时间数据类型(Oracle非常混乱地命名为DATE)。我在我的列中有一些垃圾字符串,这是错误的。如何将它们转换为NULL,并将它们全部转换为date?使用:
CASE-WHEN REGEXP_-LIKE(date_-col,[0-9]{1,2}-[A-Z]{3}-[0-9]{4}'),然后使用date(to-date(date_-col,'DD-MON-YYYY')结束