sql >> Databáze >  >> RDS >> Oracle

Proč nemohu zadat toto datum do tabulky pomocí SQL?

Oracle provede implicitní TO_DATE na nedatové literály při jejich vkládání do DATE pomocí hodnoty NLS_DATE_FORMAT jako masku formátu. Pokud se nedatový literál shoduje s tímto formátem, bude fungovat (a pokud ne, pak nebude) – pokud však NLS_DATE_FORMAT pokud se někdy změní, okamžitě se rozbije (cokoli je velmi obtížné ladit, protože kód, který fungoval, se to nezmění, ale nikdo kód nezmění).

Můžete zjistit svůj aktuální NLS_DATE_FORMAT s dotazem:

SELECT VALUE
FROM   NLS_SESSION_PARAMETERS
WHERE  PARAMETER = 'NLS_DATE_FORMAT';

Je lepší explicitně použít TO_DATE se správnou maskou formátu nebo použít datový doslov ANSI (tj. 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' )
);

Nebo pomocí formátu ANSI agnostického národního prostředí/jazyka:

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


  1. Replikace Londiste s PostgreSQL 9.0

  2. Jak filtrovat objekty v SQL Server Management Studio (SSMS) - SQL Server / TSQL výukový program, část 19

  3. 2 způsoby, jak povolit zalamování slov v SQLite

  4. Nasazení MySQL, MariaDB, Percona Server, MongoDB nebo PostgreSQL – snadné s ClusterControl