首批通过分布式安全可靠测评,为关键业务系统打造
日期格式与传参不一致,错误代码 ORA-01830
更新时间:2026-05-21 09:16
进行查询时,由于查询语句中的日期合适和实际日期格式不一致,导致报 ORA-01830 错误。本文介绍该问题的处理方法。
适用版本
OceanBase 数据库 V2.X 及后续版本。
问题现象
查询条件和实际的日期格式不一致,则会发生错误。错误信息如下:
obclient> SELECT * FROM t1 WHERE d1 > '2020-01-01 00:00:00.000';
ORA-01830: date format picture ends before converting entire input string
问题原因
根据错误信息,该问题是由于日期格式与传参不一致。
首先查看列的字段类型。
发现查询中的 d1 列为 DATE 类型。
obclient> DESC t1; +-------+--------------+------+-----+---------+-------+ | FIELD | TYPE | NULL | KEY | DEFAULT | EXTRA | +-------+--------------+------+-----+---------+-------+ | ID | NUMBER(38) | YES | NULL | NULL | NULL | | D1 | DATE | YES | NULL | NULL | NULL | | D2 | TIMESTAMP(6) | YES | NULL | NULL | NULL | +-------+--------------+------+-----+---------+-------+ 3 rows in set (0.01 sec)查看 DATE 类型的格式。
可见,当前 DATE 类型的格式为
YYYY-MM-DD HH24:MI:SS,而命令中的格式为YYYY-MM-DD HH24:MI:SS.MMM,因此可知问题为比较类型不一致。obclient> SHOW VARIABLES LIKE '%nls_date_format%'; +-----------------+-----------------------+ | VARIABLE_NAME | VALUE | +-----------------+-----------------------+ | nls_date_format | YYYY-MM-DD HH24:MI:SS | +-----------------+-----------------------+ 1 row in set (0.00 sec)
解决方式
检查 SQL 语句,保证查询的日期格式与列日期格式一致。
obclient> SELECT * FROM t1 WHERE d1 > '2020-01-01 00:00:00';