如何将 varchar(2020 年 1 月 1 日)中的日期转换为 DB2 sql 中的日期类型?
Posted
技术标签:
【中文标题】如何将 varchar(2020 年 1 月 1 日)中的日期转换为 DB2 sql 中的日期类型?【英文标题】:How do i convert a date in varchar (1-Jan-2020) to date type in DB2 sql? 【发布时间】:2021-01-01 04:24:30 【问题描述】:我的 db2 表中有一个日期列如下。
4-Jan-2020
7-Sep-2020
7-Dec-2020
我想把它们转换成
2020-01-04
2020-09-07
2020-12-07
分别。我如何实现这一目标? 谢谢。
【问题讨论】:
您的列数据类型是日期吗? 不,它是 varchar 【参考方案1】:在最新版本的 DB2 上,使用TO_DATE
:
SELECT DATE(TO_DATE(date_col, 'DD-MON-YYYY'))
FROM yourTable;
数据:
WITH yourTable AS (
SELECT '4-Jan-2020' AS date_col UNION ALL
SELECT '7-Sep-2020' UNION ALL
SELECT '7-Dec-2020'
)
【讨论】:
DATE()
相当多余。
@GordonLinoff 有趣的是,如果你在这个网站上寻找类似的问题,许多被接受的答案似乎都包含了对TO_DATE
的调用,而另一个转换为DATE()
。不知道他们为什么这样做。
令人困惑的是,TO_DATE
在 Db2 中不返回 DATE
,而是返回 TIMESTAMP
,因此将结果转换为日期通常是个好主意。这种奇怪的原因是(我相信)TO_DATE 作为其 Oracle 兼容性的一部分进入 Db2,并且 Oracle 中的 TO_DATE
返回一个日期+时间数据类型(Oracle 非常混乱地命名为 DATE docs.oracle.com/cd/B28359_01/server.111/b28318/…)
我的专栏中有一些垃圾字符串,这是错误的。我如何将它们转换为 NULL 并保持最新状态?
使用:CASE WHEN REGEXP_LIKE(date_col, '[0-9]1,2-[A-Z]3-[0-9]4') THEN DATE(TO_DATE(date_col, 'DD-MON-YYYY')) END
以上是关于如何将 varchar(2020 年 1 月 1 日)中的日期转换为 DB2 sql 中的日期类型?的主要内容,如果未能解决你的问题,请参考以下文章
Python中如何将2000年1月1日至2020年12月31号,每一天的日期信息都打印出来?Python编程?
python如何求2020年第19周起止日期: 2020年第19周(5月4日-5月10日)?
SQLServer数据库查询时间段如2013-1-1到2013-12-31出现2-9月数据漏掉,将其排序发现1月中间嵌入11月数据