Oracle
 sql >> база данни >  >> RDS >> Oracle

ORA-01840:входната стойност не е достатъчно дълга за формат на дата в Oracle Вмъкване с помощта на Select

Не можете да вмъкнете дата „с формат“. Датите имат вътрешно представяне, те винаги имат всички компоненти за дата/час и след това могат да бъдат форматирани за показване, както желаете.

Низът, който генерирате като ГГГГММ, се преобразува неявно в дата от вмъкването, тъй като това е типът данни на целевата колона. Това имплицитно преобразуване използва вашите настройки за NLS и от това се очаква по-дълга стойност, която да съответства на формата на датата на NLS. Вашият низ не съответства на този скрит формат, което причинява грешката, която виждате.

Ако се интересувате само от годината и месеца, тогава най-близкото, което можете да получите, е да съхраните полунощ на първо число от месеца, което можете да получите с trunc :

INSERT INTO CS_LOG(NAME, ID, C_DATE)
Select MAX(ML.NAME), ML.ID, TRUNC(CHK_DATE,'MM')
from D_ID ML,CS_LOG MD
WHERE ML.NAME != MD.NAME and ML.ID != MD.ID
and MD.C_DATE = LAST_DAY(sysdate)
GROUP BY ML.ID,C_DATE;

Премахнах и допълнителния to_date повикване. Трябва да помислите и за преминаване към ANSI синтаксис за свързване.

След това можете да форматирате c_date като ГГГГММ за показване, когато го заявите, ако това е, което ви трябва, чрез to_char .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да изведете резултата от oracle sql във файл в Windows?

  2. Метаданни за вградените функции на Oracle

  3. Юли 2016 PSU не успява да направи isqora

  4. ODP.net Oracle Decimal Number проблем с точността при попълване на набор от данни. Изключение:Аритметичната операция доведе до препълване

  5. Как да генерирам всички дати от неделя между 2 дати в oracle sql?