sql >> Database teknologi >  >> RDS >> Oracle

ORA-1843:ikke en gyldig måned under opdatering af post

En dato har ikke et format - den gemmes internt i databasen som 7-bytes (repræsenterer år, måned, dag, time, minut og sekund), og det er ikke før hvilken brugergrænseflade du bruger (dvs. SQL/Plus, SQL Developer, Java osv.) forsøger at vise den til dig, brugeren, og konverterer det til noget, du ville finde meningsfuldt (normalt en streng), at datoen har et format.

Hvis du angiver en formateret dato til en procedure, vil det være en streng, og Oracle vil forsøge implicit at caste den til en dato ved hjælp af NLS_DATE_FORMAT sessionsparameter:

UPDATE your_table
SET your_date_column = '18-06-14'; -- or equivalently via a bind parameter

Er implicit konverteret til

UPDATE your_table
SET your_date_column = TO_DATE(
                         '18-06-14',
                         ( SELECT value
                           FROM   NLS_SESSION_PARAMETERS
                           WHERE  parameter = 'NLS_DATE_FORMAT' )
                       );

Hvis NLS_DATE_FORMAT ikke matcher, vil Oracle rejse en undtagelse (og parameteren kan indstilles af hver bruger, så du bør ikke stole på, at den er konsistent - især i internationale organisationer, hvor standarddatoformatet afhænger af dit territorium og dit sprog).

Hvis du opdaterer værdien, skal du bruge en DATE bogstaveligt og ikke en streng:

UPDATE your_table
SET your_date_column = DATE '2014-06-18';

Eller konverter strengen eksplicit og angiv formatmodellen:

UPDATE your_table
SET your_date_column = TO_DATE( '18-06-14', 'DD-MM-RR' );

Det samme gælder for at overføre parametre til din funktion. Brug enten en DATE bogstaveligt:

BEGIN
  your_procedure(
    p_launch_date => DATE '2014-06-18'
  );
END;
/

eller eksplicit konverter strengen til en dato (og stol ikke på implicit konvertering):

BEGIN
  your_procedure(
    p_launch_date => TO_DATE( '18-06-14', 'DD-MM-RR' )
  );
END;
/



  1. udefineret indeksfejl fra en php arrya

  2. Hvad er IKKE logisk operatør i SQL Server - SQL Server / TSQL Tutorial Del 121

  3. Hvordan tilføjer man et billede til php mysql-databasen?

  4. SQL fuld tilslutning