2012-01-18 6 views
1

мне нужна помощь с этим запросом:Ошибка с датой в запросе?

update MSG_TRACE set MSG_SENT_STATUS = 'INIT',ERROR_CODE = 0,RETRY_COUNT = 0 where MSG_RECEIVED_TIME >= '16-01-2012 00:00:00,000000' and OPER_TXN_ID like 'CAP%' and MSG_SENT_STATUS in ('FAILED','ERROR'); 

Это дает мне эту ошибку: ORA-01843: не действительный месяц

MSG_RECEIVED_TIME в формате DD/MM/YYYY HH: ММ: SS.mmmmmm как 16/01/2012 02: 46: 34,729643 PM

спасибо заранее

+0

Какой формат даты ваш оракул установить с помощью? Если он установлен на MM/DD/YY, это ваша проблема. –

+0

@SimonRigharts Я также пробовал его с '01 -16-2012 00: 00: 00,000000 'и получил ту же ошибку – user1155413

+0

@FahimParkar его фактически TIMESTAMP (6) – user1155413

ответ

2

миллисекунды часть означает, что это не свидание. Вы должны бросить в отметку времени, таких как:

select to_timestamp('16-01-2012 00:00:00,000000','dd-mm-yyyy hh24:mi:ss,FF') 
from dual 

Если вам это нужно, чтобы быть формат даты, то вы можете бросить его дальше:

select to_date(
     to_char(
      to_timestamp('16-01-2012 00:00:00,000000' 
         ,'dd-mm-yyyy hh24:mi:ss,FF') 
      ,'dd-mm-yyyy hh24:mi:ss') 
     ,'dd-mm-yyyy hh24:mi:ss') 
    from dual 
+0

, если я попытаюсь выбрать (*) из MSG_TRACE, где MSG_RECEIVED_TIME> = выбрать to_timestamp ('16 -01-2012 00: 00: 00,000000 ',' dd-mm-yyyy hh24: mi: ss, FF ') из double он дает мне ORA-00936: отсутствует выражение – user1155413

+0

Оберните подзапрос в скобках и удалите их со звездочки: 'select * from MSG_TRACE, где MSG_RECEIVED_TIME> = (выберите to_timestamp ('16 -01-2012 00 : 00: 00,000000 ',' dd-mm-yyyy hh24: mi: ss, FF ') от двойного) ' –

+0

это сработало отлично !!! Спасибо большое!!!! – user1155413

0

базы данных Ваш сконфигурированный быть MM/DD/YYYY, поэтому 16/01/2012 недействительно, потому что не существует 16 месяцев. у вас есть три варианта:

  1. Изменить 16/01/2012 по 01/16/2012.
  2. Изменить DB быть DD/MM/YYYY
  3. Попробуйте добавить 16 месяц нашим каландров ... =)
0

'01-16-2012 00:00:00,000000' неверен ... попробуйте '16-01-2012 00:00:00'

Кроме того, ваш неверная дата ...

ORA-01843: not a valid month ошибка приходит как вы настраиваете месяц в 16, которые недействительны ...

формат даты в метку времени, как показано ниже

DD/MM/YYYY HH:MM:SS:MM