sql >> Databasteknik >  >> RDS >> Oracle

hur man ändrar datum till tid i oracle 10g

Jag måste lägga in STIMING en gång

Oracle har ingen TIME data typ. DATE datatyp lagras alltid internt som 7-byte och består alltid av år (2-byte) och månad, dag, timmar, minuter och sekunder (1-byte vardera).

Du kan inte inte ha en år-, månads- eller dagkomponent av en DATE .

Om du vill ha en tid för sig måste du lagra den som en annan datatyp eller lagra år/månad/dag och ignorera den komponenten.

När du är SELECT med STIMING kolumnen visar den inte tidskomponenten. Du kan ändra detta genom att ändra standarddatumformatet som är inställt i NLS_DATE_FORMAT sessionsparameter.

Du kan granska denna parameter med:

SELECT VALUE FROM NLS_SESSION_PARAMETERS WHERE PARAMETER = 'NLS_DATE_FORMAT';

Du kan ställa in detta värde inom din nuvarande session med:

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';

(Obs:detta ändrar inte värdet för några andra användare.)

När du infogar datumet kan du använda:

INSERT INTO shift ( SNO, SNAME, STIMING)
VALUES ( 121323, 'morning', TO_DATE( '01-APR-2017 07:00' DD-MON-YYYY HH24:MI' ) )

Eller en ANSI TIMESTAMP literal (som kommer att castas underförstått till DATE formatet för kolumnen):

INSERT INTO shift ( SNO, SNAME, STIMING)
VALUES ( 121323, 'morning', TIMESTAMP '2017-04-01 07:00:00' )


  1. Hur man läser MySQL binära loggfiler (BinLog) med mysqlbinlog

  2. SQL förutom

  3. MySQL väljer 10 slumpmässiga rader från 600 000 rader snabbt

  4. MySQL INT betydelse