to_date sqlstate sqldataexception ora not literal fdpstp failed error due does sql oracle sql-insert

sqldataexception - sql error 1861 sqlstate 22008



Error de SQL: ORA-01861: el literal no coincide con el formato de cadena 01861 (8)

Estoy tratando de insertar datos en una tabla existente y seguir recibiendo un error.

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.

Simplemente no estoy seguro de por qué esto sigue sucediendo. Estoy aprendiendo SQL en este momento, ¡cualquier ayuda será muy apreciada!


El formato que utiliza para la fecha no coincide con el formato de fecha predeterminado del oráculo. Una instalación predeterminada de Oracle Database establece el formato DATE predeterminado en DD-MON-YYYY. O puede usar la función to_date o simplemente usar el modelo de formato de fecha DD-MON-YYYY.


Intente reemplazar el literal de la cadena por la fecha ''1989-12-09'' con TO_DATE(''1989-12-09'',''YYYY-MM-DD'')


Pruebe el formato como dd-mon-yyyy, por ejemplo 02-08-2016 debe tener el formato ''08 -feb-2016 ''.


Si proporciona el formato de fecha correcto debería funcionar, vuelva a verificar una vez si ha proporcionado el formato de fecha correcto en los valores de inserción


También puede cambiar el formato de fecha de la sesión. Esto es útil, por ejemplo, en Perl DBI, donde la función to_date () no está disponible:

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

También puede establecer permanentemente el nls_date_format predeterminado:

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

En Perl DBI puede ejecutar estos comandos con el método do ():

$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


intente guardar una fecha como esta aaaa-mm-dd hh: mm: ss.ms por ejemplo: 1992-07-01 00: 00: 00.0 que funcionó para mí


"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


ORA-01861: literal does not match format string

Esto sucede porque ha intentado ingresar un literal con una cadena de formato, pero la longitud de la cadena de formato no era de la misma longitud que el literal.

Puede superar este problema llevando a cabo la siguiente modificación.

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

Como regla general, si está utilizando la función TO_DATE, la función TO_TIMESTAMP, la función TO_CHAR y funciones similares, asegúrese de que el literal que proporcione coincida con la cadena de formato que ha especificado