15

我的表有两个 DATE 格式属性,但是,当我尝试插入值时会引发错误:日期格式图片在转换整个输入字符串之前结束。 这是我尝试的代码:

insert into visit
values(123456, '19-JUN-13', '13-AUG-13 12:56 A.M.');

我认为问题在于,12:56但 Oracle 文档说date暗示了日期和时间。

4

4 回答 4

26

也许您应该检查NLS_DATE_FORMAT并使用符合格式的日期字符串。或者您可以to_dateINSERT语句中使用函数,如下所示:

insert into visit
values(123456, 
       to_date('19-JUN-13', 'dd-mon-yy'),
       to_date('13-AUG-13 12:56 A.M.', 'dd-mon-yyyy hh:mi A.M.'));

此外,OracleDATE日期时间信息存储在一起。

于 2013-06-20T05:54:47.593 回答
11

你需要改变会话

您可以在插入之前尝试

 sql : alter session set nls_date_format = 'YYYY-MM-DD HH24:MI:SS'
于 2016-11-03T13:50:36.270 回答
4

我认为您要插入的不是日期,而是字符串。您需要使用to_date()函数,如下所示:

insert into table t1 (id, date_field) values (1, to_date('20.06.2013', 'dd.mm.yyyy'));
于 2013-06-20T05:53:48.843 回答
3

我今天遇到了这个错误,发现这是一个格式不正确的年份......

select * from es_timeexpense where parsedate > to_date('12/3/2018', 'MM/dd/yyy')

请注意,这一年只有三个“y”。它应该有4个。

仔细检查您的格式。

于 2018-12-03T15:38:32.603 回答