ORA-01830: изображение формата даты заканчивается перед преобразованием всей входной строки

Не могли бы вы посоветовать по этому поводу?

CREATE TABLE TEST2 ( 
JOB_NAME VARCHAR2(50) NULL, 
RUNTIME NUMBER(22) NULL, 
STARTTIME1 VARCHAR2(50) NULL, 
ENDTIME1 VARCHAR2(50) NULL, 
STARTTIME_READ DATE NULL, 
ENDTIME_READ DATE NULL 
) 
GO 

insert into TEST2 values ('TEST JOB',37,'08/18/2015 20:12:24','08/18/2015 20:13:01',null,null)
 go 
insert into TEST2 values ('TEST JOB',37,'08/18/2015 20:12:24','08/18/2015 20:13:01',null,null)
 go 
insert into TEST2 values ('TEST JOB',195,'08/20/2015 19:17:05','08/20/2015 19:20:20',null,null)
 go 
insert into TEST2 values ('TEST JOB',171,'08/19/2015 19:16:52','08/19/2015 19:19:43',null,null)
 go 
insert into TEST2 values ('TEST JOB',195,'08/21/2015 19:19:08','08/21/2015 19:22:23',null,null)
 go 
insert into TEST2 values ('TEST JOB',32,'08/24/2015 19:23:52','08/24/2015 19:24:24',null,null)
 go 
insert into TEST2 values ('TEST JOB',19,'08/26/2015 19:19:00','08/26/2015 19:19:19',null,null)
 go 
insert into TEST2 values ('TEST JOB',92,'08/25/2015 19:18:59','08/25/2015 19:20:31',null,null)
 go 
insert into TEST2 values ('TEST JOB',198,'08/27/2015 19:29:58','08/27/2015 19:33:16',null,null)
 go 
insert into TEST2 values ('TEST JOB',19,'08/28/2015 19:18:13','08/28/2015 19:18:32',null,null)
 go 
insert into TEST2 values ('TEST JOB',44,'08/31/2015 19:49:22','08/31/2015 19:50:06',null,null)
 go 
insert into TEST2 values ('TEST JOB',266,'09/11/2015 19:17:10','09/01/2015 19:21:36',null,null)
 go 
insert into TEST2 values ('TEST JOB',18,'09/20/2015 19:17:33','09/02/2015 19:17:51',null,null)
 go 
insert into TEST2 values ('TEST JOB',33,'09/22/2015 19:16:50','09/03/2015 19:17:23',null,null)
 go 
insert into TEST2 values ('TEST JOB',170,'08/17/2015 19:18:07','08/17/2015 19:20:57

запрос:

select job_name,to_char(to_date(avg(to_number(to_char(to_date(starttime1,'mm/dd/yyyy hh24:mi:ss'),'SSSSS'))),'SSSSS'),'HH24:MI:SS')AVG_STARTIME
 from TEST2 group by job_name 

Ошибка:

ORA-01830: изображение формата даты заканчивается перед преобразованием всей входной строки

он работает для некоторых записей в таблице. Эти даты в точности выглядят так, как указано выше. Я не понимаю, что не так с этим форматом даты

Примечание: я использую Oracle 8i


person user5001305    schedule 16.09.2015    source источник
comment
Когда столкнулись с проблемой? во время вставки или выбора оператора?   -  person rajuGT    schedule 16.09.2015
comment
go - недопустимый оператор SQL. Сценарий не может работать с Oracle.   -  person a_horse_with_no_name    schedule 16.09.2015


Ответы (3)


Попробуй это. У вас было несколько проблем. Маска формата для to_number должна быть «99999», а не «SSSSS», а результат функции avg не был целым числом, поэтому to_date не работал. Округлил значение.

    SELECT job_name,
      TO_CHAR(to_date(ROUND(AVG(to_number(TO_CHAR(to_date(starttime1,'mm/dd/yyyy hh24:mi:ss'),
'SSSSS'),'99999')),0),'SSSSS'),'HH24:MI:SS')AVG_STARTIME
    FROM TEST2
    GROUP BY job_name
person OldProgrammer    schedule 16.09.2015

Я думаю это то что ты ищешь

select job_name,to_char(
  to_date(
    TRUNC(avg(
      to_number(
        to_char(
          to_date(starttime1,'mm/dd/yyyy hh24:mi:ss'),
          'SSSSS')
      )
    )),'SSSSS'),'HH24:MI:SS')AVG_STARTIME
 from TEST2 group by job_name 

Это среднее значение возвращает числа с десятичными знаками. Просто используйте TRUNC, чтобы исправить это.

sqlfiddle

person Cristian_I    schedule 16.09.2015

Вы видите свое свидание таким только потому, что конвертируете его на выходе.

Фактический формат выглядит так: «гггг-мм-дд».

поэтому ваш запрос должен быть:

insert into TEST2 values ('TEST JOB',33,'2015-09-22 19:16:50','2015-09-03 19:17:23',null,null)
person durbnpoisn    schedule 16.09.2015