sql >> Databasteknik >  >> RDS >> Oracle

Varför kan jag inte ange detta datum i en tabell med SQL?

Oracle kommer att göra en implicit TO_DATE på icke-datumbokstavar när du infogar dem i en DATE kolumnen med värdet NLS_DATE_FORMAT som formatmask. Om den icke-datumliteralen matchar det här formatet kommer den att fungera (och om den inte gör det kommer den inte att fungera) - dock om NLS_DATE_FORMAT ändras så kommer den omedelbart att gå sönder (det är svårt att felsöka eftersom koden som fungerade inte kommer att fungera men ingen kommer att ha ändrat koden).

Du kan ta reda på din nuvarande NLS_DATE_FORMAT med frågan:

SELECT VALUE
FROM   NLS_SESSION_PARAMETERS
WHERE  PARAMETER = 'NLS_DATE_FORMAT';

Det är bättre att uttryckligen använda TO_DATE med rätt formatmask eller att använda en ANSI-datumliteral (dvs. 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' )
);

Eller genom att använda språkagnostiska ANSI-format:

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


  1. Bättre att använda marköradapter eller Array-adapter

  2. SQL-serverlogg, leverans och katastrofåterställning, installation och konfiguration -1

  3. Skapa en SQL Server-databas med SQLOPS

  4. Hur kan jag automatisera uppgiften att skapa skript i SQL Server Management Studio 2008?