pl sql datetime format
Lær om PL SQL Datetime Format og nogle nyttige funktioner omkring Datetime, Timestamp og Interval:
I PL / SQL Udløsere i PL SQL-serien , vi lærte om deres typer, brug og fordele.
I denne artikel vil vi undersøge datoen og klokkeslættet i PL / SQL og nogle af funktionerne på datatyperne Datetime, Timestamp og Interval. Vi skal også udføre nogle grundlæggende operationer på Datetime og Interval.
Lad os begynde med diskussionen !!
Hvad du vil lære:
PL SQL-datatidsformat
PL / SQL har en dato / tid datatype, der giver os mulighed for at holde og beregne datoer, intervaller og tidspunkter. Variablen, der er af typen dato eller klokkeslæt, indeholder en værdi kaldet DateTime. Variablen, der holder intervaldatatypen, kaldes intervallet. Hver af disse datatyper har felter, der indstiller værdien.
DateTime-datatyperne er anført nedenfor:
- TIDSSTEMPEL
- TIDSTEMPEL MED TIDSZONE
- TIDSSTEMPEL MED LOKAL TIDSZONE
- DATO
Intervaldatatyperne er anført nedenfor:
- INTERVALDAG TIL ANDET
- INTERVALÅR TIL MÅNED
DATO
Datatiderne med fast længde er gemt i datatypen DATE. Det omfatter tidspunktet på dagen fra midnat i sekunder. Datosektionen peger på den første dag i denne måned og klokkeslættet peger på midnat. Det indeholder dato og klokkeslæt i både antal og karakterdatatyper.
SYSDATE er en datofunktion, der henter det aktuelle tidspunkt og dato. Det rigtige datointerval er fra 1. januar 4712 f.Kr. til 31. december 9999 e.Kr. Tegnværdierne i standardformatet (bestemt af Oracle initialiseringsparameter NLS_DATE_FORMAT) konverteres naturligt af PL / SQL til DATE-værdier.
Vi kan anvende matematiske operationer som addition og subtraktion på datoer. PL / SQL fortolker heltal bogstaver i form af dage. For eksempel, SYSDATE + 1 point til i morgen.
TIDSSTEMPEL
Datatypen tidsstempel er en udvidelse af datatypen DATE. Det bruges til at holde året, måneden, timen og det andet. Standardtidsstempelformatet bestemmes af Oracle initialiseringsparameter NLS_TIMESTAMP_FORMAT.
Syntaks:
TIMESTAMP((precision))
Her er præcisionen ikke en obligatorisk parameter og peger på antallet af cifre, der er i den brøkdel af sekundfeltet. Præcisionen skal være et helt bogstaveligt tal fra 0 til 9. Standardværdien er sat til 6.
TIDSTEMPEL MED TIDSZONE
Denne datatype er en udvidelse af datatypen TIMESTAMP og indeholder forskydning af tidszone. Tidszones forskydning er tidsforskellen (i timer og minutter) mellem lokal tid og UTC (Coordinated Universal Time).
Standardtidstemplet med tidszoneformat bestemmes af Oracle initialiseringsparameter NLS_TIMESTAMP_TZ_FORMAT. Syntaks:
TIMESTAMP((precision)) WITH TIME ZONE
Her er præcisionen ikke en obligatorisk parameter og peger på antallet af cifre, der er i den brøkdel af sekunder-feltet. Præcisionen skal være et helt bogstaveligt tal fra 0 til 9. Standardværdien er sat til 6.
ved fejl genoptages næste i qtp
Vi kan nævne tidszonen med symboler. Det kan være af lang form som 'USA / Stillehavet' eller kort sagt 'PDT' eller en kombination af begge. Denne datatype bruges således til at dække og beregne information på tværs af geografiske placeringer.
TIDSSTEMPEL MED LOKAL TIDSZONE
Tidsstempel med datatype for lokal tidszone er en udvidelse af TIMESTAMP-datatypen og indeholder tidszoneforskydning. Tidszones forskydning er tidsforskellen (i timer og minutter) mellem lokal tid og UTC (Coordinated Universal Time).
Syntaks:
TIMESTAMP ((precision)) WITH LOCAL TIME ZONE
Her er præcisionen ikke en obligatorisk parameter og peger på antallet af cifre, der er i den brøkdel af det andet felt. Præcisionen skal være et helt bogstaveligt tal fra 0 til 9. Standardværdien er sat til 6.
TIDSTEMPEL MED LOKAL TIDSZONE er forskellig fra TIDSTEMPEL MED TIDSZONE på grund af det faktum, at mens vi indsætter værdi i databasen, indstilles værdien til tidszonen for databasen, og tidszonens forskydning holdes ikke i databasekolonnen. Når værdien hentes, returneres den imidlertid i den lokale tidszonesession.
INTERVALÅR TIL MÅNED
Denne datatype bruges til at gemme og beregne interval for år og måneder.
Syntaks:
INTERVAL YEAR ((precision)) TO MONTH
Her er præcisionen antallet af cifre i et års felt. Præcisionen skal være et helt bogstaveligt tal fra 0 til 4. Standardværdien er sat til 2.
INTERVAL ÅR TIL ANDET
Datatype Interval år til anden bruges til at gemme og beregne intervaller på dage, timer, minutter og sekunder.
Syntaks:
INTERVAL DAY ((l_precision)) TO SECOND ((fractional_s_precision))
Her, den l_præcision og fraktioneret_s_præcision er antallet af cifre i henholdsvis dage og sekunder.
Præcisionen skal være et helt bogstaveligt tal fra 0 til 9. Standardværdierne er indstillet til henholdsvis 2 og 6.
Feltværdier: Datetid og interval
- SEKUND: Værdierne for gyldigt DateTime-interval er fra 00 til 59,9 (m), hvor m betegner tidsbrøk sekunder. Værdierne for det gyldige intervalinterval er fra 00 til 59,9 (m), hvor m angiver intervallet i brøkdele af sekunder.
- MINUT: Værdierne for det gyldige DateTime-interval er fra 00 til 59. Værdierne for det gyldige intervalområde er fra 0 til 59.
- TIME: Værdierne for gyldigt DateTime-interval er fra 00 til 23. Værdierne for det gyldige intervalinterval er fra 0 til 23.
- DAG: Værdierne for det gyldige DateTime-interval er fra 01 til 31 (begrænset af værdierne YEAR og MONTH i henhold til reglerne i landekalenderen). Værdien for et gyldigt intervalinterval er ethvert heltal, der ikke er nul.
- MÅNED: Værdierne for gyldigt DateTime-interval er fra 01 til 12. Værdierne for det gyldige intervalinterval er fra 0 til 11.
- ÅR: Værdierne for gyldigt DateTime-interval er fra -4712 til 9999 ekskl. År 0. Værdien for det gyldige intervalinterval er ethvert heltal, der ikke er nul.
- TIMEZONE_HOUR: Værdierne for gyldigt DateTime-interval er fra -12 til 14, det inkluderer ændringer af sommertid. Dette gælder ikke for det gyldige interval.
- TIMEZONE_MINUTE: Værdierne for gyldigt DateTime-interval er fra 00 til 59. Dette gælder ikke for det gyldige interval.
- TIMEZONE_REGION: Værdierne for gyldigt DateTime-interval gælder ikke for DATE eller TIMESTAMP. Dette gælder ikke for et gyldigt interval.
- TIMEZONE_ABBR: Værdierne for gyldigt DateTime-interval gælder ikke for DATE eller TIMESTAMP. Dette gælder ikke for det gyldige interval.
PL SQL-funktioner i datatid
Her indeholder m og n værdierne for datatiden.
Sl nr. | Navn | Formål |
---|---|---|
7 | SYSDATE () | Henter den aktuelle datatid. |
1 | LAST_DAY (m) | Henter den sidste dag i måneden. |
to | ADD_MONTHS (m, n) | Summer op m og n måneder. |
3 | MÅNEDER_BETWEEN (m, n) | Henter antallet af måneder mellem m og n. |
4 | NÆSTE_DAG (m, dag) | Henter datatiden for den følgende dag efter m. |
5 | NÆSTE GANG | Henter klokkeslættet / dagen fra den anmodede tidszone. |
6 | RUND (m (, enhed)) | Runder m. |
8 | TRUNC (m (, enhed)) | Trunkerer m. |
PL SQL-funktioner i tidsstempel
Her indeholder m værdien af tidsstemplet.
Sl nr. | Navn | Formål |
---|---|---|
7 | TO_TIMESTAMP_TZ (m, (format)) | Konverterer strengen m til en TIMESTAMP MED TIMEZONE. |
1 | CURRENT_TIMESTAMP () | Henter en TIMESTAMP MED TIMEZONE, der har den nuværende session og sessionens tidszone. |
to | FROM_TZ (m, tidszone) | Konverterer m TIMESTAMP og nævner tidszone til TIMESTAMP MED TIMEZONE. |
3 | LOCALTIMESTAMP () | Henter et TIMESTAMP, der har den lokale tid i sessionens tidszone. |
4 | SYSTEMTIMESTAMP () | Henter en TIMESTAMP MED TIMEZONE, der har den aktuelle databasetid og databasetidszone. |
5 | SYS_EXTRACT_UTC (m) | Konverterer m TIMESTAMP MED TIMEZONE til TIMESTAMP, der har dato og tid i UTC. |
6 | TO_TIMESTAMP (m, (format)) | Konverterer strengen m til en TIMESTAMP. |
Kodeimplementering med datatids- og tidsstempelfunktioner:
BEGIN /* get the current date and time */ DBMS_OUTPUT.put_line ('The output of SYSDATE is:'|| SYSDATE); /* get the TIMESTAMP WITH TIME ZONE with database time and time zone */ DBMS_OUTPUT.put_line ('The output of SYSTIMESTAMP is:' ||SYSTIMESTAMP); /* get the TIMESTAMP with local time in session time zone */ DBMS_OUTPUT.put_line ('The output of LOCALTIMESTAMP:' ||LOCALTIMESTAMP); /*get the TIMESTAMP WITH TIME ZONE with present session time with session time zone */ DBMS_OUTPUT.put_line ('The output of CURRENT_TIMESTAMP:'||CURRENT_TIMESTAMP); /*convert string to TIMESTAMP*/ DBMS_OUTPUT.put_line ('The output of TIMESTAMP:'||TO_TIMESTAMP('12-JAN-2011')); /*to add months*/ DBMS_OUTPUT.put_line ('The output of ADD_MONTHS:'||ADD_MONTHS(SYSDATE,1)); /*to get date and time of following day*/ DBMS_OUTPUT.put_line ('The output of NEXT_DAY:'||NEXT_DAY(SYSDATE,'MONDAY')); /*to truncate date */ DBMS_OUTPUT.put_line ('The output of TRUNC:'||TRUNC(SYSDATE)); /*to get the last day of month */ DBMS_OUTPUT.put_line ('The output of LAST_DAY:'||LAST_DAY (SYSDATE)); END; /
Output af ovenstående kode:
PL SQL-funktioner i interval
Sl nr. | Navn | Formål |
---|---|---|
1 | NUMTODSINTERVAL (m, interval) | Transformerer tallet m til INTERVAL DAG TIL ANDET. |
to | NUMTOYMINTERVAL (m, interval) | Transformerer tallet m til INTERVAL ÅR TIL MÅNED. |
3 | TO_DSINTERVAL (m) | Transformerer strengen m til INTERVAL DAY TO SECOND. |
4 | TO_YMINTERVAL (m) | Transformerer strengen m til INTERVAL ÅR TIL MÅNED. |
Aritmetiske operationer i datatid og interval
PL / SQL giver dig mulighed for at oprette DateTime og intervaludtryk.
Listen over operatører, der kan anvendes, er:
- Hvis den første operand er DateTime, og den anden operand er et interval, og vi vil anvende (+) operatoren på dem, er resultatværdien af DateTime-typen.
- Hvis den første operand er DateTime, og den anden operand er et interval, og vi ønsker at anvende (-) operatoren på dem, er resultatværdien af DateTime-typen.
- Hvis den første operand er interval, og den anden operand er DateTime, og vi vil anvende (+) operatoren på dem, er resultatværdien af DateTime-typen.
- Hvis den første operand er DateTime, og den anden operand er DateTime, og vi ønsker at anvende (-) operatoren på dem, er resultatværdien af intervaltypen.
- Hvis den første operand er interval, og den anden operand er et interval, og vi vil anvende (+) operatoren på dem, er resultatværdien af intervaltypen.
- Hvis den første operand er interval, og den anden operand er et interval, og vi vil anvende (-) operatoren på dem, er resultatværdien af intervaltypen.
- Hvis den første operand er interval, og den anden operand er numerisk, og vi vil anvende (*) operatoren på dem, er resultatværdien af intervaltypen.
- Hvis den første operand er numerisk, og den anden operand er et interval, og vi vil anvende (*) operatoren på dem, er resultatværdien af intervaltypen.
- Hvis den første operand er interval, og den anden operand er numerisk, og vi vil anvende operatoren (/) på dem, er resultatværdien af intervaltypen.
Kodeimplementering med nogle aritmetiske operationer i Datetime og Interval.
c ++ genererer tilfældigt tal mellem 1 og 10
DECLARE c_dt TIMESTAMP; r_dt TIMESTAMP; s_dt TIMESTAMP; BEGIN c_dt := SYSTIMESTAMP; r_dt:= c_dt + TO_DSINTERVAL ('1600 5:20:1'); DBMS_OUTPUT.PUT_LINE ('Addition of datetime and Interval:' ||r_dt); s_dt:= c_dt - TO_DSINTERVAL ('1600 5:20:1'); DBMS_OUTPUT.PUT_LINE ('Subtraction of datetime and Interval:' || s_dt); END;
Output af ovenstående kode:
Forklaring til ovenstående kode:
- I koden betyder ('1600 5: 20: 1') 1600 dage, 5 timer, 20 minutter og 1 sekund .
- I den første output er den første operand DateTime, og den anden operand er et interval. Da vi tilføjede dem, fik vi en dato som 24-DEC med tid i AM.
- I den anden output er den første operand DateTime, og den anden operand er et interval. Ved først at trække fra det andet fik vi en dato som 20-MAR med tid i PM.
Ofte stillede spørgsmål og svar
Q # 1) Hvad er det aktuelle tidsstempel?
Svar: Den aktuelle tidsstempel eller CURRENT_TIMESTAMP beskriver en tidsstempel, der er afhængig af aflæsningen af klokkeslættet, mens en SQL-sætning udføres på serveren.
Spørgsmål nr. 2) Hvad returnerer Sysdate i Oracle?
Svar: Funktionen Sysdate () henter den aktuelle dato og tid konfigureret i det operativsystem, hvor databasen er placeret. Datatypen af værdi, der returneres af den, er DATE.
Q # 3) Hvilken PL / SQL-funktion giver den aktuelle systemdato og -tid?
Svar: PL / SQL-funktionen, der giver den aktuelle systemdato og -tid, er SYSDATE ().
Spørgsmål nr. 4) Hvad er DUAL SQL?
Svar: DUAL er en databasetabel oprettet af Oracle som standard sammen med en dataordbog. Den indeholder en række og en kolonne. DUAL ejes af SYS, men kan bruges af alle brugere.
Spørgsmål nr. 5) Hvordan erklærer du en datovariabel i PL SQL?
Svar: Vi kan erklære en datovariabel i PL / SQL med syntaksen nedenfor:
DECLARE stdt DATE := to_date ('06/06/2006', 'DD/MM/YYYY');
Spørgsmål nr. 6) Hvad er datoformatet i Oracle?
Svar: Standarddatoformatet i Oracle for input og output er 'DD / MON / YY'. Dette er konfigureret af værdien i parameteren NLS_DATE_FORMAT.
Konklusion
I denne PL SQL Datetime Format tutorial har vi diskuteret detaljeret nogle grundlæggende begreber i PL / SQL Date and Time, der er vigtige for at bruge dem til programmering.
Vi har dækket nedenstående emner:
- Dato og tid.
- Funktioner omkring Datetime, Timestamp og Interval.
- Aritmetiske operationer på Datetime og Interval.
- Feltværdier i Datetime og Interval.
Anbefalet læsning
- Funktioner til dato og tid i C ++ med eksempler
- Python DateTime-tutorial med eksempler
- C # DateTime-tutorial: Arbejde med dato og tid i C # med eksempel
- Underprogrammer: PL SQL-procedurer og funktioner med eksempler
- VBScript Datofunktioner: Datoformat, DateAdd og cDate-funktioner
- PL SQL-vejledning til begyndere med eksempler Hvad er PL / SQL