ORA-08186: invalid timestamp specified

1、

SQL> select count(*) from t as of timestamp to_timestamp('2015-05-20 12:00:00','YYYY-MM-DD HH24:MI:SS');
select count(*) from t as of timestamp to_timestamp('2015-05-20 12:00:00','YYYY-MM-DD HH24:MI:SS')
                     *
ERROR at line 1:
ORA-08186: invalid timestamp specified

SYSDATE
-------------------
2015-05-20 02:13:28

如果指定一个未来的时间就会报以上的错误


2、

SQL> select count(*) from t as of timestamp to_timestamp('2015-05-19 12:00:00','YYYY-MM-DD HH24:MI:SS');
select count(*) from t as of timestamp to_timestamp('2015-05-19 12:00:00','YYYY-MM-DD HH24:MI:SS')
                     *
ERROR at line 1:
ORA-01466: unable to read data - table definition has changed

报错的原因,是因为在该时间点,表还没有创建


SQL>  select count(*) from t as of timestamp to_timestamp('2015-05-20 02:00:00','YYYY-MM-DD HH24:MI:SS');

  COUNT(*)
----------
     72511


### 解决 Oracle ORA-00904 Invalid Identifier 错误 当遇到 `ORA-00904: invalid identifier` 错误时,通常意味着 SQL 语句中的某个标识符未被识别或存在语法问题。以下是几种常见原因及其对应的解决方案: #### 字段名称拼写错误 确认所使用的字段名是否存在于目标表中,并且拼写完全一致。数据库区分大小写,在某些情况下,使用双引号定义的列名会保持其大小写敏感性。 ```sql SELECT parent_id FROM my_table; -- 假设 'parent_id' 是正确的列名 ``` #### 创建字段时多余的逗号 检查创建表结构时是否有不必要的逗号,特别是在最后一项之后添加了额外的逗号可能会引发此错误。 ```sql CREATE TABLE example ( id NUMBER, name VARCHAR2(50), ); -- 多余的逗号应移除 ``` #### 使用双引号引起的问题 如果在建表时给定的列名为大写字母并用双引号括起来,则后续查询也需严格匹配大小写及双引号形式;反之则无需考虑大小写的差异[^3]。 ```sql -- 如果表中有如下定义:"Parent_Id" SELECT "Parent_Id" FROM some_table; ``` #### 变量未正确定义 确保所有引用到的变量已在之前声明过。对于 PL/SQL 中的过程、函数等编程单元来说尤为重要。 ```plsql DECLARE v_parent_id NUMBER := NULL; BEGIN SELECT PARENT_ID INTO v_parent_id FROM dual WHERE rownum=1; END; / ``` #### 别名处理不当 有时通过视图或其他复杂查询构建的数据集可能包含带有特殊字符或保留字作为别名的情况,此时应当调整别名命名方式以避免冲突[^4]。 ```sql SELECT report.fid AS reportId FROM reports; -- 避免使用带引号的形式 ``` 以上方法可以帮助排查和修复大多数由 `ORA-00904` 导致的问题。具体应用取决于实际场景下的具体情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

huangliang0703

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值