sql update Aggiornamento di una data nella tabella Oracle Oracle




update date sql (3)

Sto cercando di aggiornare una data in una tabella SQL. Sto usando Oracle di Peoplesoft. Quando eseguo questa query:

Select ASOFDATE from PASOFDATE;

Ottengo il 16/04/2012

Ho provato a eseguire questa query

UPDATE PASOFDATE SET ASOFDATE = '11/21/2012';

ma non sta funzionando.

Qualcuno sa come cambierei la data in quella desiderata?


Se questo SQL viene utilizzato in qualsiasi codice peoplesoft specifico (Application Engine, SQLEXEC, SQLfetch, ecc.) È possibile utilizzare% Datein metaSQL. Peopletools converte automaticamente la data in un formato che sarà accettato dalla piattaforma di database su cui è in esecuzione l'applicazione.

Nel caso in cui questo SQL venga utilizzato per eseguire un aggiornamento del backend da un analizzatore di query (come SQLDeveloper, SQLTools), il formato della data che viene utilizzato è errato. Oracle prevede che il formato della data sia DD-MMM-YYYY, dove MMM potrebbe essere JAN, FEB, MAR, ecc.


Solo per aggiungere la risposta di Alex Poole, ecco come si fa la data e l'ora:

    TO_DATE('31/DEC/2017 12:59:59', 'dd/mm/yyyy hh24:mi:ss')

Ciò si basa sul presupposto che stai ricevendo un errore sul formato della data, ad esempio un valore del mese non valido o un carattere non numerico quando è previsto un valore numerico.

Le date memorizzate nel database non hanno formati. Quando si interroga la data in cui il client sta formattando la data per la visualizzazione, come 4/16/2011 . Normalmente lo stesso formato di data viene utilizzato per selezionare e aggiornare le date, ma in questo caso sembrano essere diversi, quindi il tuo cliente sta facendo apparentemente qualcosa di più complicato che SQL * Plus, per esempio.

Quando si tenta di aggiornarlo sta utilizzando un modello di formato data predefinito. A causa di come viene visualizzato, supponiamo che sia MM/DD/YYYY , ma sembra che non lo sia. Potresti scoprire di cosa si tratta, ma è meglio non fare affidamento sul modello di default o su qualsiasi modello di formato implicito.

Se questo è il problema o no, devi sempre specificare il modello di data:

UPDATE PASOFDATE SET ASOFDATE = TO_DATE('11/21/2012', 'MM/DD/YYYY');

Poiché non stai specificando un componente orario: tutte le colonne Oracle DATE includono un orario, anche se è mezzanotte, potresti anche utilizzare un valore letterale di data :

UPDATE PASOFDATE SET ASOFDATE = DATE '2012-11-21';

Dovresti forse controllare che il valore corrente non includa un tempo, anche se il nome della colonna suggerisce che non lo sia.





peoplesoft