SELECT content,
REGEXP_SUBSTR(content, '\d{4}-\d{2}-\d{2}') AS datetime1,
REGEXP_SUBSTR(content, '\d{1,2}-\d{1,2}') AS datetime2,
REGEXP_SUBSTR(content, '\d{4}年\d{1,2}月') AS datetime3
FROM your_table
以下方法仅供参考,或许对你有所启发
SELECT REGEXP_REPLACE(
LISTAGG(REGEXP_SUBSTR(content, '([0-9]{4}[-][0-9]{2}[-][0-9]{2})|([0-9]{2}[/][0-9]{2}[/][0-9]{4})|([0-9]{2}[-][A-Za-z]{3}[-][0-9]{2})'),
',') WITHIN GROUP (ORDER BY content),
'\s*,\s*', ',') AS dates
FROM table;
正则表达式 ([0-9]{4}[-][0-9]{2}[-][0-9]{2})|([0-9]{2}[/][0-9]{2}[/][0-9]{4})|([0-9]{2}[-][A-Za-z]{3}[-][0-9]{2})
匹配了三种可能的日期类型:YYYY-MM-DD、MM/DD/YYYY 和 DD-MON-YY。
使用 REGEXP_SUBSTR 函数将匹配到的日期类型提取出来,并使用 LISTAGG 函数将它们以逗号分隔的形式拼接在一起。
最后使用 REGEXP_REPLACE 函数将多余的空格和逗号去除。
该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
可以使用Oracle SQL中的正则表达式函数来提取文本中的日期,并将其转换为所需的日期格式。以下是一个例子:
SELECT content,
REGEXP_SUBSTR(content, '\d{1,2}\.\d{1,2}') AS date1,
TO_DATE(REGEXP_SUBSTR(content, '\d{1,2}\.\d{1,2}'), 'DD.MM') AS date1_conv,
REGEXP_SUBSTR(content, '\d{4}-\d{1,2}-\d{1,2}') AS date2,
TO_DATE(REGEXP_SUBSTR(content, '\d{4}-\d{1,2}-\d{1,2}'), 'YYYY-MM-DD') AS date2_conv,
REGEXP_SUBSTR(content, '\d{1,2}-\d{1,2}') AS date3,
TO_DATE(REGEXP_SUBSTR(content, '\d{1,2}-\d{1,2}'), 'DD-MM') AS date3_conv,
REGEXP_SUBSTR(content, '\d{4}年\d{1,2}月') AS date4,
TO_DATE(REGEXP_SUBSTR(content, '\d{4}年\d{1,2}月'), 'YYYY"年"MM"月"') AS date4_conv
FROM your_table;
在这个例子中,我们使用REGEXP_SUBSTR函数来提取文本中的日期,其中正则表达式用于匹配特定日期格式。然后使用TO_DATE函数将其转换为所需的日期格式,并将其放入单独的列中。
需要注意的是,如果日期中包含了年份和月份,那么在使用TO_DATE函数进行转换时需要使用对应的格式化字符串。
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢
引用chatGPT作答,要提取不同日期格式的文本并将其放入单独的列中,您需要使用正则表达式和SQL中的字符串函数。
假设您的表名为my_table,包含一个名为content的列,您想要从该列中提取不同的日期格式到另外两列,分别为date_format_1和date_format_2。那么,您可以使用以下SQL查询:
SELECT
content,
REGEXP_SUBSTR(content, '\d{2}-\d{2}-\d{4}', 1, 1) AS date_format_1,
REGEXP_SUBSTR(content, '\d{4}/\d{2}/\d{2}', 1, 1) AS date_format_2
FROM my_table;
上述SQL语句使用REGEXP_SUBSTR函数从content列中提取两种不同的日期格式。第一个REGEXP_SUBSTR函数使用正则表达式\d{2}-\d{2}-\d{4}来匹配dd-mm-yyyy格式的日期,并将其放入date_format_1列中。第二个REGEXP_SUBSTR函数使用正则表达式\d{4}/\d{2}/\d{2}来匹配yyyy/mm/dd格式的日期,并将其放入date_format_2列中。
请注意,您可以根据需要使用不同的正则表达式来匹配不同的日期格式,并将它们放入单独的列中。