SQL-fout: ORA-01861: Letterbal komt niet overeen met Format String 01861

Ik probeer gegevens in een bestaande tabel in te voegen en een fout te ontvangen.

INSERT INTO Patient  
(
  PatientNo,
  PatientFirstName,
  PatientLastName,
  PatientStreetAddress,
  PatientTown,
  PatientCounty,
  PatientPostcode,
  DOB,
  Gender,
  PatientHomeTelephoneNumber,
  PatientMobileTelephoneNumber
)
VALUES 
(
  121, 
  'Miles', 
  'Malone', 
  '64 Zoo Lane', 
  'Clapham', 
  'United Kingdom',
  'SW4 9LP',
  '1989-12-09',
  'M',
  02086950291,
  07498635200
);

FOUT:

Error starting at line : 1 in command -
INSERT INTO Patient (PatientNo,PatientFirstName,PatientLastName,PatientStreetAddress,PatientTown,PatientCounty,PatientPostcode,DOB,Gender,PatientHomeTelephoneNumber,PatientMobileTelephoneNumber)
VALUES (121, 'Miles', 'Malone', '64 Zoo Lane', 'Clapham', 'United Kingdom','SW4 9LP','1989-12-09','M',02086950291,07498635200)
Error report -
SQL Error: ORA-01861: literal does not match format string
01861. 00000 -  "literal does not match format string"
*Cause:    Literals in the input must be the same length as literals in
           the format string (with the exception of leading whitespace).  If the
           "FX" modifier has been toggled on, the literal must match exactly,
           with no extra whitespace.
*Action:   Correct the format string to match the literal.

Niet zeker waarom dit blijft gebeuren, ik leer op dit moment SQL, elke hulp zal zeer op prijs worden gesteld!


Antwoord 1, Autoriteit 100%

Probeer de tekenreeks te vervangen voor datum '1989-12-09'met TO_DATE('1989-12-09','YYYY-MM-DD')


Antwoord 2, autoriteit 6%

Het formaat dat u voor de datum gebruikt, komt niet overeen met het standaard datumformaat van Oracle.

Een standaardinstallatie van Oracle Database stelt de STANDAARD DATUMFORMAAT in op dd-MMM-yyyy.

Gebruik de functie TO_DATE(dateStr, formatStr)of gebruik gewoon het dd-MMM-yyyydatumnotatiemodel.


Antwoord 3, autoriteit 6%

Je kunt ook de datumnotatie voor de sessie wijzigen. Dit is bijvoorbeeld handig in Perl DBI, waar de functie to_date() niet beschikbaar is:

ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD'

Je kunt het standaard nls_date_format ook permanent instellen:

ALTER SYSTEM SET NLS_DATE_FORMAT='YYYY-MM-DD'

In Perl DBI kunt u deze commando’s uitvoeren met de do() methode:

$db->do("ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD');

http://www.dba-oracle.com/t_dbi_interface1.htm
https://community.oracle.com/thread/682596?start=15&amp ;tstart=0


Antwoord 4

ORA-01861: literal does not match format string

Dit gebeurt omdat je hebt geprobeerd een letterlijke tekst in te voeren met een opmaaktekenreeks, maar de lengte van de opmaaktekenreeks was niet dezelfde lengte als de letterlijke.

U kunt dit probleem oplossen door de volgende wijziging uit te voeren.

TO_DATE('1989-12-09','YYYY-MM-DD')

Als algemene regel geldt dat als u de TO_DATE-functie gebruikt, TO_TIMESTAMP
functie, TO_CHAR functie en soortgelijke functies, zorg ervoor dat de
letterlijke die u opgeeft, komt overeen met de opmaakreeks die u hebt
gespecificeerd


Antwoord 5

Als u de juiste datumnotatie opgeeft, zou deze moeten werken, controleer dan nog een keer of u de juiste datumnotatie hebt opgegeven in waarden invoegen


Antwoord 6

probeer de datum zo op te slaan
jjjj-mm-dd uu:mm:ss.ms
bijvoorbeeld:
1992-07-01 00:00:00.0
dat werkte voor mij


Antwoord 7

Probeer het formaat als dd-mon-yyyy, bijvoorbeeld 02-08-2016 moet in het formaat ’08-feb-2016′ zijn.

Other episodes