Tutorial för Oracle DBA
On januari 1, 2022 by adminDatumfunktioner och operatörer.
För att se systemets datum och tid använder du följande funktioner :
CURRENT_DATE :returnerar det aktuella datumet i sessionens tidszon, i ett värde i den gregorianska kalendern av datatyp
DATE
SYSDATE :returnerar aktuellt datum och aktuell tid.
SYSTIMESTAMP :Funktionen SYSTIMESTAMP returnerar systemdatumet, inklusive bråksekunder och tidszon
för databasen. Returtypen är TIMESTAMP WITH TIME ZONE.
SYSDATE Exempel
För att se aktuellt systemdatum och aktuell tid ger du följande fråga:
select sysdate from dual;
SYSDATE
——-
8-AUG-03
För att se det aktuella systemdatumet och den aktuella systemtiden anger du följande fråga:
Det format i vilket datumet visas beror på parametern NLS_DATE_FORMAT.
Sätt till exempel NLS_DATE_FORMAT till följande format
alter session set NLS_DATE_FORMAT=’DD-MON-YYYYYY HH:MIpm’;
Ge sedan följande uttalande
select sysdate from dual;
SYSDATE
——————
8-AUG-2003 03:05pm
Standardinställningen för NLS_DATE_FORMAT är DD-MON-YY
CURRENT_DATE Exempel
För att se det aktuella systemdatumet och den aktuella tiden med tidszon använder du funktionen CURRENT_DATE
ALTER SESSION SET TIME_ZONE = ’-4:0’;
ALTER SESSION SET NLS_DATE_FORMAT = ’DD-MON-YYYY HH24:MI:SS’;
SÄLJ SESSIONTIMEZONE, CURRENT_DATE FRÅN DUAL;
SESSIONTIMEZONE CURRENT_DATE
————— ——————–
-04:00 22-APR-2003 14:15:03
ALTER SESSION SET TIME_ZONE = ’-7:0’;
SÄLJ SESSIONTIMEZONE, CURRENT_DATE FRÅN DUAL;
SESSIONTIMEZONE CURRENT_DATE
————— ——————–
-07:00 22-APR-2003 09:15:33
SYSTIMESTAMP Exempel
För att se det aktuella systemets datum och tid med bråksekunder med tidszon, ange följande
select systimestamp from dual;
SYSTIMESTAMP
——————————-
22-APR-03 08.38.55.538741 AM -07:00
MODELLER FÖR DATUMSFORMAT
För att översätta datumet till en annan formatsträng kan du använda funktionen TO_CHAR med datumformat. Om du till exempel vill se den aktuella dagen kan du ange följande fråga
Select to_char(sysdate,’DAY’) ”Today” FROM DUAL;
TODAY
——-
THURSDAY
För att översätta ett teckenvärde, som har ett annat format än standarddatumformatet, till ett datumvärde kan du använda TO_DATE-funktionen med datumformat till datum
Som den här formatmodellen ”DAY” finns det många andra datumformatmodeller som är tillgängliga i Oracle. Följande tabell innehåller en förteckning över datumformatmodeller.
FORMAT |
MEDDELNING |
D |
Veckadag |
DD |
Månadsdag |
DDD |
Årsdag |
DAG |
Hel dag för ex. ’måndag’, ’tisdag’, ’onsdag’ |
DY |
Dag med tre bokstäver för t.ex. ’MON’, ’TUE’,’FRI’ |
W |
Månadens vecka |
WW |
Vecka på året |
MM |
Månad med två siffror (1-Jan, 2-Feb,…12-Dec) |
MON |
Månad med tre tecken som ”Jan”, ”Feb”, ”Apr” |
MONTH |
En hel månad som ”januari”, ”februari”, ”april” |
RM |
Månad med romerska tecken (I-XII, I-Jan, II-Feb,…XII-Dec) |
Q |
Månadens fjärdedel |
YYY |
De två sista siffrorna i året. |
ÅÅÅÅÅ |
Fullt år |
ÅR |
År i ord som ”Nineteen Ninety Nine” |
HHH |
Stunder i 12-timmarsformat |
HHH12 |
Stunder i 12-timmarsformat |
HH24 |
Stundtalsformat 24 timmar |
MI |
Minuter |
SS |
Sekunder |
FF |
Fraktionssekunder |
SSSSSSS |
Millisekunder |
J |
Julian Day i.e Dagar sedan 1-Jan-4712BC till dags dato |
RR |
Om året är mindre än 50 antas året vara det 21:a århundradet. Om året är större än 50 antas året vara 1900-talet. |
suffix
TH |
Returnerar th, st, rd eller nd enligt det ledande numret som 1st , 2nd 3rd 4th |
SP |
Spellar ut det ledande numret |
AM eller PM |
Returnerar AM eller PM enligt tiden |
SPTH |
Returnerar stavat ordinalt tal. För. Exempel First, Fourth |
För att se dagens datum i följande format
Fridag, 7th March, 2014
Giv följande uttalande
Selektera to_char(sysdate,’Day, ddth Month, yyyy’) ”Today” från dual;
TODAY
————————
fredag, 7 mars, 2014
Till exempel vill du se anställningsdatum för alla anställda i följande format
fredag, 8 augusti, 2003
Förklara följande fråga.
select to_char(hire_date,’Day, ddth Month, yyyy’) from emp;
TO_DATE Exempel
To_Date-funktionen används för att konvertera strängar till datumvärden. Du vill till exempel se vilken dag det var den 15 augusti 1947. Funktionen to_date används för att först konvertera strängen till ett datumvärde och sedan överföra detta värde till funktionen to_char för att extrahera dagen.
select to_char(to_date(’15-aug-1947′,’dd-mon-yyyy’),’Day’)
from dual;
TO_CHAR(
——–
Friday
För att se hur många dagar som har gått sedan 15-aug-1947, gör följande fråga
select sysdate-to_date(’15-aug-1947′,’dd-mon-yyyy’) from dual;
Nu vill vi se vilket datum som kommer att inträffa efter 45 dagar från nu
select sysdate+45 from dual;
SYSDATE
——-
06-JUN-2003
ADD_MONTHS
För att se vilket datum som kommer att inträffa efter 6 månader från och med nu kan vi använda ADD_MONTHS-funktionen
Selektera ADD_MONTHS(SYSDATE,6) från dual;
ADD_MONTHS
———-
22-OCT-2003
MONTHS_BETWEEN
Funktionen MONTHS_BETWEEN används för att se hur många månader som gått sedan ett visst datum.
För att till exempel se hur många månader som har gått sedan 15-aug-1947, gör du följande fråga.
select months_between(sysdate,to_date(’15-aug-1947′))
from dual;
Months
——
616.553
För att eliminera decimalvärdet använd truncate-funktionen
sälj trunc(months_between(sysdate,to_date(’15-aug-1947′)))
från dual;
Månader
——
616
LAST_DAY
För att se det sista datumet i månaden för ett visst datum använder du funktionen LAST_DAY.
select LAST_DAY(sysdate) from dual;
LAST_DAY
——–
31-AUG-2003
NEXT_DAY
För att se när en viss dag kommer nästa gång använder du funktionen NEXT_DAY.
För att till exempel se när nästa lördag är på väg ger du följande fråga
select next_day(sysdate) from dual;
NEXT_DAY
———–
09-AUG-2003
EXTRACT
En EXTRACT-datumtidsfunktion extraherar och returnerar värdet av ett specificerat datumtidsfält från ett datumtidsuttryck eller ett intervallvärde. När du extraherar en TIMEZONE_REGION eller TIMEZONE_ABBR (förkortning) är det returnerade värdet en sträng som innehåller lämpligt namn eller förkortning för tidszonen
Syntaxen för EXTRACT-funktionen är
EXTRACT ( YEAR / MONTH / WEEK / DAY / HOUR / MINUTE / TIMEZONE FROM DATE)
Example
Nedan visas användningen av EXTRACT-funktionen för att extrahera år från aktuellt datum.
select extract(year from sysdate) from dual;
EXTRACT
——-
2003
Lämna ett svar