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

Защо не мога да въведа тази дата в таблица с помощта на sql?

Oracle ще направи неявно TO_DATE на литерали без дата, когато ги вмъквате в DATE колона, използвайки стойността на NLS_DATE_FORMAT като маска на формат. Ако литералът без дата съвпада с този формат, той ще работи (а ако не, тогава няма да стане) - обаче, ако NLS_DATE_FORMAT се променя някога, то веднага ще се счупи (отстраняването на грешки е огромна мъка, тъй като работещият код няма да го направи, но никой няма да е променил кода).

Можете да разберете текущия си NLS_DATE_FORMAT със заявката:

SELECT VALUE
FROM   NLS_SESSION_PARAMETERS
WHERE  PARAMETER = 'NLS_DATE_FORMAT';

По-добре е изрично да използвате TO_DATE с правилната маска за формат или да използвате ANSI литерал за дата (т.е. DATE '2014-12-01' ).

insert into employees_table
values(
  05,
  'Sophie',
  'Kuchinskey',
  '[email protected]',
  105,
  5000000,
  60,
  TO_DATE( '20-sep-1994', 'DD-Mon-YYYY' )
);

Или като използвате ANSI формат, независим от локал/език:

insert into employees_table
values(
  05,
  'Sophie',
  'Kuchinskey',
  '[email protected]',
  105,
  5000000,
  60,
  DATE '1994-09-20'
);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проверка на sid на oracle и име на база данни

  2. Функция LPAD() в Oracle

  3. Импортиране на файлове в Oracle Apex с помощта на wwv_flow_files

  4. Oracle Еквивалент на MySQL INSERT IGNORE?

  5. Заключване на Liquibase - причини?