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

Oracle SQL使用DATE_FORMAT按月分组报ORA-00904错误如何解决

错误原因

你遇到的error 00904. 00000 - invalid identifier报错,是因为编写SQL时误用了MySQL数据库的专属函数DATE_FORMAT(),Oracle数据库没有这个内置函数,无法识别该函数名,因此抛出无效标识符错误。

修复方法

Oracle中做日期格式化需要使用内置的TO_CHAR()函数,替换掉原SQL里的DATE_FORMAT()即可实现按月统计去重事故数的需求,修正后的SQL如下:

SELECT 
  TO_CHAR(DATUM, 'YYYY/MM') AS "Month",
  COUNT(DISTINCT ID_ACCIDENT) AS "Počet nehod" 
FROM RAW_DATA
GROUP BY TO_CHAR(DATUM, 'YYYY/MM');
补充说明
  • 如果DATUM列是字符串类型、固定存储为YYYY/MM/DD格式,也可以直接用字符串截取的方式分组,执行效率更高:
SELECT 
  SUBSTR(DATUM, 1, 7) AS "Month",
  COUNT(DISTINCT ID_ACCIDENT) AS "Počet nehod" 
FROM RAW_DATA
GROUP BY SUBSTR(DATUM, 1, 7);
  • 低版本Oracle不支持在GROUP BY子句中直接引用SELECT里定义的别名,因此分组时要写完整的格式化/截取表达式,不要直接写别名,避免触发新的报错。
  • 如果需要输出带月份名称的结果,可以把格式化参数里的MM替换为MON(月份缩写)或MONTH(月份全称)。

内容的提问来源于stack exchange,提问作者Filip Kotas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 19:24:25