迄今为止的SQL字符串

迄今为止的SQL字符串,sql,oracle,date,datetime,oracle11g,Sql,Oracle,Date,Datetime,Oracle11g,我有一个Comments(Clob)字段,它收集了发表评论的时间、发表评论的人和评论本身 我需要从字段中提取“日期”、“评论人” 使用正则表达式,我可以提取日期字段并按字段注释,但日期是字符 我无法将此字段转换为日期 注释示例: 2018年7月18日上午10:36:29,beginj请求取消,因为步骤不再可行 2018年5月16日上午8:28:04,josephav不适用于GSC 我可以使用此正则表达式(RE)获取“日期”: 我可以使用此正则表达式(RE)按名称获取注释_ 因此,我使用RE提取后

我有一个
Comments(Clob)
字段,它收集了发表评论的时间、发表评论的人和评论本身

我需要从字段中提取“日期”、“评论人”

使用正则表达式,我可以提取日期字段并按字段注释,但日期是字符

我无法将此字段转换为日期

注释示例:

2018年7月18日上午10:36:29,beginj请求取消,因为步骤不再可行

2018年5月16日上午8:28:04,josephav不适用于GSC

我可以使用此正则表达式(RE)获取“日期”:

我可以使用此正则表达式(RE)按名称获取注释_

因此,我使用RE提取后的日期如下所示:

10/5/2017
4/2/2012
12/31/2015
3/16/2014
我需要将这些转换为正确的日期,以便在代码中进一步使用这些日期

感谢您的帮助:)

谢谢使用

   SELECT 
   CASE WHEN (length(<regex_string>). 
     <9)
  Then 
TO_DATE('0'||<regex_string>,'MM/DD/YYYY') 
选择
大小写时(长度()。

在调用查询之前,可以根据您所在的国家/地区设置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;

您可以使用ORA-01843:不是有效的月份Hanks Himanshu,但我得到以下错误:ORA-01843:不是有效的月份当检查您的月份数据时,在大多数地方都是个位数,因此使用case语句将额外的
M
作为值
0
case
语句连接起来
   ELSE
TO_DATE(<regex_string>,'MM/DD/YYYY') 
    END CASE FROM TABLE;
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;