ORACLE SQL Trim 对正则表达式无效

ORACLE SQL Trim ineffective with Regular Expressions

澄清

当我简化 时,即

   SELECT TO_CHAR(MIN(I.INCIDENTID))               AS "Incident ID",
          TRIM(TO_CHAR(I.CREATIONDATE,'DD-MON-YYYY'))           AS "Creation Date"    
   FROM   INCIDENT I  
   GROUP BY TRIM(TO_CHAR(I.CREATIONDATE,'DD-MON-YYYY'))

我明白了

但是如果我将 164,000 多行不同的行合并到我的实际查询中,我得到

但我希望如此(唯一不同的是,创建日期必须具有正确的日期格式,而不是这个复杂的字符串)

原始问题

我正在从外部 Oracle 数据库中读取日期时间,并且 trim 使用 TRIM(I.CREATIONDATE) 成功地处理了任何额外的空格。

我已经验证了这一点,因为我的 SQL 查询只显示不同的日期值

但是,TRIM(I.CREATIONDATE)2/26/2019 11:05:44 AM变成了26-FEB-19 11.05.43.925000 AM,但是我只想要26-FEB-19

当我应用正则表达式只获取日期时,即 REGEXP_SUBSTR(TRIM(I.CREATIONDATE),'[^ ]+'),它肯定会输出 26-FEB-19,但不知何故添加了额外的空格,因为我得到了重复的日期。

我已经尝试第二次申请 TRIM,即 TRIM(REGEXP_SUBSTR(TRIM(I.CREATIONDATE),'[^ ]+')),但我仍然重复申请

然后我先尝试 运行 正则表达式,然后 trim,但这不起作用,即 TRIM(REGEXP_SUBSTR(I.CREATIONDATE,'[^ ]+')) 仍然给出重复项。

请协助

我认为您希望 trunc(),而不是 trim() 删除时间部分。

所以尝试:

trunc(i.creationdate)

或者,如果您希望日期以特定字符串表示:

to_char(i.creationdate, 'YYYY-MM-DD')

尝试 to_char:

trim(to_char(column_name,'dd-mon-yy'))