将奇数字符串更改为日期 SQL
Changing Odd Text String to Date SQL
有一个文本字符串需要转换为日期,但是,它不是通用的 yyyymmdd 字符串。例如2018 年 3 月与所有其他日期一样存储为“2018m3”。有没有办法在 Oracle 中将字符串转换为正常日期?
如果是这种格式,你可以这样做:
select add_months(to_date(substr(col, 1, 4) || '0101'),
to_number(replace(substr(col, -2), 'm', '')) - 1
)
另一种方法:
select to_date(substr(col, 1, 4) || regexp_substr(col, '[0-9]+', 1, 2), 'YYYYMM')
这可能会有帮助:
SQL> SELECT to_date('2018m3', 'YYYY"m"MM') FROM dual
2 /
输出
TO_DATE('2018M3','YYYY"M"MM')
-----------------------------
3/1/2018
有一个文本字符串需要转换为日期,但是,它不是通用的 yyyymmdd 字符串。例如2018 年 3 月与所有其他日期一样存储为“2018m3”。有没有办法在 Oracle 中将字符串转换为正常日期?
如果是这种格式,你可以这样做:
select add_months(to_date(substr(col, 1, 4) || '0101'),
to_number(replace(substr(col, -2), 'm', '')) - 1
)
另一种方法:
select to_date(substr(col, 1, 4) || regexp_substr(col, '[0-9]+', 1, 2), 'YYYYMM')
这可能会有帮助:
SQL> SELECT to_date('2018m3', 'YYYY"m"MM') FROM dual
2 /
输出
TO_DATE('2018M3','YYYY"M"MM')
-----------------------------
3/1/2018