Erreur SQL: ORA-01861: literal ne correspond pas à la chaîne de format 01861

j'essaie d'insérer des données dans une table existante et de continuer à recevoir une erreur.

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
);

Erreur:

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.

juste pas sûr pourquoi cela continue à se produire je suis en train D'apprendre SQL en ce moment, toute aide sera grandement appréciée!

35
demandé sur Mike Burton 2014-03-20 23:11:31

8 réponses

essayez de remplacer la chaîne de caractères littéral pour date '1989-12-09'TO_DATE('1989-12-09','YYYY-MM-DD')

80
répondu mustaccio 2014-03-20 19:33:08

le format que vous utilisez pour la date ne correspond pas au format de Date par défaut de l'oracle. Une installation par défaut de la base de données Oracle fixe le format de DATE par défaut à JJ-lun-YYYY. Vous pouvez utiliser la fonction to_date ou tout simplement utiliser le modèle de format de date JJ-lun-AAAA.

3
répondu Mitz 2015-05-14 07:44:57

vous pouvez également modifier le format de la date de la session. Ceci est utile, par exemple, dans Perl DBI, où la fonction to_date () n'est pas disponible:

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

vous pouvez définir de façon permanente le nls_date_format par défaut ainsi:

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

dans Perl DBI vous pouvez exécuter ces commandes avec le do() méthode:

$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&tstart=0

2
répondu grvsmth 2016-12-13 16:29:56
"SELECT ci.PARTY_NAME, sm.DC_No,ic.DC_DATE, sm.bill_no,sr.sales_DATE,sum(sm.QTY), 'Buyer' as issue_type  " +
        " FROM   sales_register sr,customer_issue ci join ( SELECT ISSUE_DATE AS DC_DATE,issue_id FROM ISSUE UNION  SELECT ISSUE_DATE,issue_id AS DC_DATE FROM CUSTOMER_ISSUE) IC on ic.issue_id=ci.issue_id " +
        " join sales_mat_reg sm on ic.issue_id=sm.issue_id where ic.DC_DATE between  to_date('"+from_date+"','DD-MON-YY') " +
         " and  to_date('"+to_date+"','DD-MON-YY')  group by ci.PARTY_NAME, sm.DC_No, sm.bill_no, ic.DC_DATE, sr.sales_DATE,issue_type 
 literal does not match format string
0
répondu vinitha 2017-07-29 12:45:43

essayez d'enregistrer la date comme ceci aaaa-mm-jj hh:mm:ss.ms exemple: 1992-07-01 00:00:00.0 cela a fonctionné pour moi

0
répondu Vibe 2017-09-28 15:56:02
ORA-01861: literal does not match format string

cela se produit parce que vous avez essayé d'entrer un littéral avec une chaîne de format, mais la longueur de la chaîne de format n'était pas la même longueur que le littéral.

vous pouvez surmonter ce problème en effectuant la modification suivante.

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

en règle générale, si vous utilisez la fonction TO_DATE, TO_TIMESTAMP la fonction, la fonction TO_CHAR, et des fonctions similaires, assurez-vous que l' literal que vous fournissez correspond à la chaîne de format vous avez spécifié

0
répondu Dulith De Cozta 2018-06-21 05:56:26

essayez le format JJ-lun-yyyy, par exemple 02-08-2016 devrait être dans le format "08-feb-2016".

-1
répondu gopal 2016-02-08 09:39:10

si vous fournissez un format de date approprié, cela devrait fonctionner. veuillez revérifier une fois si vous avez donné le format de date correct dans insert values

-1
répondu KAMAL 2016-08-23 08:48:42