我有一个Comments (Clob)
字段,它是评论时间、评论和评论本身的集合。
我需要从字段中提取“日期”、“评论依据”。
使用正则表达式,我能够提取日期字段和comment_by字段,但日期是字符。
我无法将此字段转换为Date
。
注释示例:
7/18/2018 10:36:29 AM,beginj请求取消,因为步骤不再可行。
2018-05-16 8:28:04,josephav不适用于GSC
我可以使用这个正则表达式(RE)获取'date‘:
regexp_substr((dbms_lob.substr(requestcommentsdisplay,50,1)),'[^ ]+',1)
我可以使用以下正则表达式(RE)获取Comment_by名称
regexp_substr((dbms_lob.substr(requestcommentsdisplay,50,1)),'[a-z]+',1)
因此,我使用RE提取后的日期如下:
10/5/2017
4/2/2012
12/31/2015
3/16/2014
我需要将它们转换为适当的日期,以便可以在代码中进一步使用这些日期
如有任何帮助,我们将非常感谢:)
谢谢
发布于 2019-02-22 05:18:59
使用
SELECT
CASE WHEN (length(<regex_string>).
<9)
Then
TO_DATE('0'||<regex_string>,'MM/DD/YYYY')
,但是oracle也会用一位数来解析它,不过您可以尝试通过这个函数来调试和打印一位数日期。
条件。
ELSE
TO_DATE(<regex_string>,'MM/DD/YYYY')
END CASE FROM TABLE;
为了将字符串转换为日期格式,您从regex_substr
获得的o/p是一个字符串。
这将允许您以接收的格式读取输入,并将其转换为实际的oracles日期格式。
发布于 2019-02-22 06:07:36
在调用查询之前,您可以根据您所在的国家设置nls_territory参数
alter session set nls_territory = 'AMERICA';--alternatively convert to 'TURKEY' as an example
然后尝试执行以下操作
with tab(date_chr) as
(
select '10/5/2017' from dual union all
select '4/2/2012' from dual union all
select '12/31/2015' from dual union all
select '3/16/2014' from dual
)
select to_date(date_chr,'MM/DD/YYYY')
from tab;
https://stackoverflow.com/questions/54816227
复制相似问题