it-swarm.com.de

SQL-Fehler: ORA-01861: Das Literal stimmt nicht mit der Formatzeichenfolge 01861 überein

Ich versuche, Daten in eine vorhandene Tabelle einzufügen und erhalte weiterhin einen Fehler.

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:

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.

Nur nicht sicher, warum dies immer wieder geschieht Ich lerne gerade SQL, jede Hilfe wird sehr geschätzt!

36
LizzyPooh

Versuchen Sie, das String-Literal für Datum '1989-12-09' durch TO_DATE('1989-12-09','YYYY-MM-DD') zu ersetzen.

83
mustaccio

Das Format, das Sie für das Datum verwenden, stimmt nicht mit dem Standard-Datumsformat von Oracle überein. Bei einer Standardinstallation von Oracle Database wird das Standardformat DATE auf DD-MON-YYYY gesetzt. Sie können entweder die Funktion to_date verwenden oder einfach das Datumsformatmodell DD-MON-YYYY.

3
Mitz

Sie können auch das Datumsformat für die Sitzung ändern. Dies ist beispielsweise in Perl-DBI nützlich, wo die to_date () - Funktion nicht verfügbar ist:

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

Sie können auch das Standardformat nls_date_format dauerhaft festlegen:

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

In Perl DBI können Sie diese Befehle mit der do () -Methode ausführen:

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

http://www.dba-Oracle.com/t_dbi_interface1.htmhttps://community.Oracle.com/thread/682596?start=15&tstart=0

2
grvsmth

versuchen Sie, das Datum wie folgt zu speichern yyyy-mm-dd hh: mm: ss.ms Zum Beispiel :____ 1992-07-01 00: 00: 00.0

0
Vibe
ORA-01861: literal does not match format string

Dies geschieht, weil Sie versucht haben, ein Literal mit einer Formatzeichenfolge einzugeben, die Länge der Formatzeichenfolge jedoch nicht dieselbe Länge wie das Literal hatte.

Sie können dieses Problem überwinden, indem Sie die folgenden Änderungen durchführen.

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

Wenn Sie die TO_DATE-Funktion verwenden, wird in der Regel TO_TIMESTAMP Funktion, TO_CHAR-Funktion und ähnliche Funktionen, stellen Sie sicher, dass die Das von Ihnen angegebene Literal stimmt mit der Formatzeichenfolge überein, die Sie haben spezifizierten

0
Dulith De Costa