You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从VARCHAR2列中提取MM/DD/YYYY格式的日期值

从混合数据的VARCHAR2列提取MM/DD/YYYY格式日期

方法1:筛选单一内容行中的日期

如果列中每行仅包含单一内容(如示例所示,每行要么是日期、要么是其他字符串/数字),用REGEXP_LIKE精准匹配格式即可:

SELECT your_column AS extracted_date
FROM your_table
WHERE REGEXP_LIKE(your_column, '^\d{2}/\d{2}/\d{4}$');

正则规则说明:

  • ^:匹配字符串起始位置
  • \d{2}:匹配两位数字(对应月份、日期)
  • /:匹配日期分隔符
  • \d{4}:匹配四位数字(对应年份)
  • $:匹配字符串结束位置

这个规则会排除纯数字、带字母的内容,只保留严格符合MM/DD/YYYY格式的行。

方法2:提取行内嵌入的日期

如果行中同时包含日期和其他文本(比如Annual Report 12/31/2019),用REGEXP_SUBSTR提取日期部分:

SELECT REGEXP_SUBSTR(your_column, '\d{2}/\d{2}/\d{4}') AS extracted_date
FROM your_table
WHERE REGEXP_SUBSTR(your_column, '\d{2}/\d{2}/\d{4}') IS NOT NULL;

可选:验证日期有效性

如果需要确保提取的是真实有效的日期(排除13/32/2020这类格式对但逻辑错的内容),结合日期转换做验证:

Oracle 12c及以上版本(支持TRY_CAST):

SELECT your_column AS extracted_date
FROM your_table
WHERE REGEXP_LIKE(your_column, '^\d{2}/\d{2}/\d{4}$')
AND TRY_CAST(your_column AS DATE, 'MM/DD/YYYY') IS NOT NULL;

旧版本Oracle:

SELECT your_column AS extracted_date
FROM your_table
WHERE REGEXP_LIKE(your_column, '^\d{2}/\d{2}/\d{4}$')
AND EXISTS (
    SELECT 1 FROM DUAL 
    WHERE TO_DATE(your_column, 'MM/DD/YYYY') IS NOT NULL
);

内容的提问来源于stack exchange,提问作者RatnakarRao M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 17:42:09