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

hvordan man ændrer dato til tid i oracle 10g

Jeg skal indsætte STIMING en gang

Oracle har ikke en TIME datatype. DATE datatypen gemmes altid internt som 7-bytes og er altid sammensat af år (2-bytes) og måned, dag, timer, minutter og sekunder (1-byte hver).

Du kan ikke ikke have en år-, måned- eller dagkomponent af en DATE .

Hvis du ønsker et tidspunkt alene, bliver du nødt til at gemme det som en anden datatype eller gemme år/måned/dag og ignorere den komponent.

Når du er SELECT ved at bruge STIMING kolonne viser den ikke tidskomponenten. Du kan ændre dette ved at ændre standarddatoformatet, som er indstillet i NLS_DATE_FORMAT sessionsparameter.

Du kan gennemgå denne parameter ved at bruge:

SELECT VALUE FROM NLS_SESSION_PARAMETERS WHERE PARAMETER = 'NLS_DATE_FORMAT';

Du kan indstille denne værdi i din aktuelle session ved at bruge:

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

(Bemærk:dette ændrer ikke værdien for andre brugere.)

Når du indsætter datoen, kan du bruge:

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 implicit vil blive castet til DATE formatet af kolonnen):

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


  1. Få tabelkolonnenavne i MySQL?

  2. Sådan får du måneden fra en dato i MySQL

  3. En omfattende guide til, hvordan du bruger MySQL

  4. Hvordan tilføjer man brugerdefinerede attributter til SQL-forbindelsesstrengen?