SQL Error: ORA-01861: littérale ne correspond pas au format de la chaîne de 01861
Je suis en train d'essayer d'insérer des données dans une table existante et continuez à 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 ne sais pas pourquoi ça arrive tout le temps je suis l'apprentissage du SQL pour le moment, toute aide sera grandement appréciée!
- pouvons-nous voir votre structure de la table? Je soupçonne que c'est les numéros de téléphone qui sont
VARCHAR2
ou quelque chose et que vous êtes de les insérer commeNUMBER
- CRÉER la TABLE Patient ( PatientNo CHAR(5) not NULL PRIMARY KEY, InvoiceNo CHAR(5) not NULL, PatientFirstName VARCHAR2(20) not NULL, PatientLastName VARCHAR2(20) not NULL, PatientStreetAddress VARCHAR2(40) not NULL, PatientTown VARCHAR2(20), PatientCounty VARCHAR2(20), PatientPostcode VARCHAR2(8) not NULL, date de naissance DATE not NULL, Sexe CHAR(1) CONTRAINTE pat_g_nn PAS NULL, PatientHomeTelephoneNumber VARCHAR2(11) CONTRAINTE pat_phtn_nn );
- Je parie que c'est la
DOB
colonne. Si c'est le cas, essayez d'utiliser leTO_DATE
fonction pour analyser la chaîne de date'1989-12-09'
correctement. PatientHomeTelephoneNumber
est varchar2, vous êtes à l'insérer en tant queNUMBER
, il doit être entouré par des''
et je ne vois pasPatientMobileTelephoneNumber
dans votre instruction create.
Vous devez vous connecter pour publier un commentaire.
Essayez de remplacer la chaîne de caractères littérale de la date
'1989-12-09'
avecTO_DATE('1989-12-09','YYYY-MM-DD')
date '1989-12-09'
au lieu d'utiliserto_date()
.date
et je pense que vous aurez besoin d'inclure la partie de la date de celui-ci.DATE
, le remplissant avec lesto_date('2014-03-21 09:15:00', 'YYYY-MM-DD HH24:MI:SS')
, outimestamp '2014-03-21 09:15:00.0'
- en lire plus.SELECT * FROM V$NLS_PARAMETERS
Le format que vous utilisez pour la date ne correspond pas à l'oracle du format de Date par défaut. Une installation par défaut de la Base de données Oracle définit le format de DATE par défaut pour DD-MON-YYYY. Soit vous pouvez utiliser la fonction to_date ou simplement utiliser le DD-MON-YYYY date format de modèle.
Vous pouvez également modifier le format de la date pour la session. Ceci est utile, par exemple, en Perl DBI, où la to_date() la fonction n'est pas disponible:
Vous pouvez régler durablement la valeur par défaut nls_date_format ainsi:
En Perl DBI vous pouvez exécuter ces commandes avec le do() méthode:
http://www.dba-oracle.com/t_dbi_interface1.htm
https://community.oracle.com/thread/682596?start=15&tstart=0
essayez d'enregistrer la date comme ceci
aaaa-mm-jj hh:mm:ss.ms
par exemple:
1992-07-01 00:00:00.0
cela a fonctionné pour moi
Cela se produit parce que vous avez essayé d'entrer dans un littéral avec une chaîne de format, mais la longueur de la chaîne de format n'était pas de la même longueur que le littéral.
Vous pouvez résoudre ce problème en effectuant suivant la modification.
Essayer le format dd-mon-yyyy, Par exemple 02-08-2016 doit être dans le format '08-feb-2016'.
Si vous fournir le format de la date, il doit travailler s'il vous plaît vérifiez une fois si vous avez donné une date correcte format d'insérer des valeurs