Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Dlaczego nie mogę wprowadzić tej daty do tabeli za pomocą sql?

Oracle wykona niejawne TO_DATE na literałach niebędących datami podczas wstawiania ich do DATE kolumna przy użyciu wartości NLS_DATE_FORMAT jako maska ​​formatu. Jeśli literał niedatowany pasuje do tego formatu, będzie działać (a jeśli nie, to nie) - jednak, jeśli NLS_DATE_FORMAT jest kiedykolwiek zmieniany, to natychmiast się zepsuje (każdy może być ogromnym problemem podczas debugowania, ponieważ kod, który działał, nie ulegnie zmianie, ale nikt go nie zmieni).

Możesz sprawdzić swój aktualny NLS_DATE_FORMAT z zapytaniem:

SELECT VALUE
FROM   NLS_SESSION_PARAMETERS
WHERE  PARAMETER = 'NLS_DATE_FORMAT';

Lepiej jest jawnie użyć TO_DATE z poprawną maską formatu lub użyć literału daty ANSI (np. 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' )
);

Lub przy użyciu niezależnego od ustawień regionalnych/językowych formatu 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. Czy istnieje wyrażenie CASE w JPQL?

  2. ORA-01861:literał nie pasuje do ciągu formatu

  3. Zmień nazwę tabeli lub widoku Oracle

  4. Jak umieścić więcej niż 1000 wartości w klauzuli Oracle IN

  5. Zresetuj sekwencję zgodnie z rokiem, a nie o wartość minimalną lub maksymalną