迄今为止的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;