Tutorial voor Oracle DBA
On januari 1, 2022 by adminDatum Functies en Operatoren.
Om de systeemdatum en -tijd te zien gebruikt u de volgende functies :
CURRENT_DATE :geeft de huidige datum in de sessietijdzone terug, in een waarde in de Gregoriaanse kalender van het datatype
DATE
SYSDATE :geeft de huidige datum en tijd terug.
SYSTIMESTAMP :De functie SYSTIMESTAMP geeft de systeemdatum terug, inclusief fractionele seconden en tijdzone
van de database. Het retourneertype is TIMESTAMP MET TIJDZONE.
SYSDATE Voorbeeld
Om de huidige systeemdatum en -tijd te zien geeft u de volgende query.
select sysdate from dual;
SYSDATE
——-
8-AUG-03
Het formaat waarin de datum wordt weergegeven hangt af van de parameter NLS_DATE_FORMAT.
Zet bijvoorbeeld de NLS_DATE_FORMAT op het volgende formaat
alter session set NLS_DATE_FORMAT=’DD-MON-YYY HH:MIpm’;
Geef dan het volgende statement
select sysdate from dual;
SYSDATE
——————
8-AUG-2003 03:05pm
De standaardinstelling van NLS_DATE_FORMAT is DD-MON-YY
CURRENT_DATE Voorbeeld
Om de huidige systeemdatum en -tijd met tijdzone te zien, gebruikt u de functie CURRENT_DATE
ALTER SESSION SET TIME_ZONE = ‘-4:0’;
ALTER SESSION SET NLS_DATE_FORMAT = ‘DD-MON-YYYY HH24:MI:SS’;
SELECT SESSIONTIMEZONE, CURRENT_DATE FROM DUAL;
SESSIONTIMEZONE CURRENT_DATE
————— ——————–
-04:00 22-APR-2003 14:15:03
ALTER SESSION SET TIME_ZONE = ‘-7:0’;
SELECT SESSIONTIMEZONE, CURRENT_DATE FROM DUAL;
SESSIONTIMEZONE CURRENT_DATE
————— ——————–
-07:00 22-APR-2003 09:15:33
SYSTIMESTAMP Voorbeeld
Om de huidige systeemdatum en -tijd te zien met fractionele seconden met tijdzone geef je het volgende statement
select systimestamp from dual;
SYSTIMESTAMP
——————————-
22-APR-03 08.38.55.538741 AM -07:00
DATUM FORMAT MODELLEN
Om de datum in een andere format string te vertalen kunt u de TO_CHAR functie met datum format gebruiken. Om bijvoorbeeld de huidige dag te zien, kunt u de volgende query geven
Select to_char(sysdate,’DAY’) “Today” FROM DUAL;
DAG
——-
THURSDAY
Om een tekenwaarde, die in een ander formaat dan het standaard datumformaat is, in een datumwaarde te vertalen kun je de functie TO_DATE met datumformaat gebruiken
Zoals dit “DAY” formaat model zijn er vele andere datumformaat modellen beschikbaar in Oracle. De volgende tabel geeft een lijst van datum formaat modellen.
FORMAT |
MEENING |
D |
Dag van de week |
DD |
Dag van de maand |
DD |
Dag van het jaar |
DAG |
Volledige dag voor bijv. ‘Maandag’, ‘Dinsdag’, ‘Woensdag’ |
DAG |
Dag in drie letters voor bijv. ‘MA’, ‘TUE’,’VRI’ |
W |
Week van de maand |
W |
Week van het jaar |
MM |
Maand in twee cijfers (1-Jan, 2-Feb,…12-dec) |
MON |
Maand in drie cijfers zoals “Jan”, “Feb”, “Apr” |
MONTH |
Volledige maand zoals “januari”, “februari”, “april” |
RM |
Maand in Romeinse karakters (I-XII, I-Jan, II-Feb,….XII-Dec) |
Q |
Kwartaal van de maand |
Y |
Laatste twee cijfers van het jaar. |
JJJ |
Volledig jaar |
JAAR |
Jaar in woorden zoals “Negentien Negenennegentig” |
HH |
Uren in 12-uurs indeling |
HH12 |
Uren in 12-uurs indeling |
HH24 |
Uren in 24-uurs indeling |
MI |
Minuten |
SS |
Seconden |
FF |
Fractionele Seconden |
SSSSS |
Milliseconden |
J |
Juliaanse Dag i.Dagen sinds 1-Jan-4712 v. Chr. tot en met datum |
RR |
Als het jaar kleiner is dan 50, gaat u ervan uit dat het jaar de 21e eeuw is. Als het jaartal hoger is dan 50, wordt ervan uitgegaan dat het jaartal in de 20e eeuw ligt. |
suffixen
TH |
Retourneert th, st, rd of nd overeenkomstig het leidende nummer zoals 1st , 2e 3e 4e |
SP |
Spelt het voorloopgetal |
AM of PM |
Geeft AM of PM terug volgens de tijd |
SPTH |
Geeft gespeld rangtelwoord terug. Voor. Voorbeeld Eerste, Vierde |
Voorbeeld om de datum van vandaag in het volgende formaat te zien
Vrijdag, 7 maart, 2014
Geef het volgende statement
select to_char(sysdate,’Day, ddth Month, yyyy’) “Today” uit dual;
TODAY
————————
Friday, 7th March, 2014
U wilt bijvoorbeeld de aanstellingsdata van alle werknemers in het volgende formaat zien
Friday, 8th August, 2003
Geef dan de volgende query.
select to_char(hire_date,’Day, ddth Month, yyyy’) from emp;
TO_DATE Voorbeeld
To_Date functie wordt gebruikt om strings om te zetten in datumwaarden. U wilt bijvoorbeeld zien wat de dag was op 15-aug-1947. Gebruik de functie to_date om eerst de tekenreeks om te zetten in een datumwaarde en geef deze waarde dan door aan de functie to_char om de dag te extraheren.
select to_char(to_date(’15-aug-1947′,’dd-mon-yyyy’),’Day’)
from dual;
TO_CHAR(
——–
Vrijdag
Om te zien hoeveel dagen er sinds 15-aug-1947 zijn verstreken, geef je de volgende query
select sysdate-to_date(’15-aug-1947′,’dd-mon-yyyy’) from dual;
Nu willen we zien welke datum over 45 dagen zal vallen
select sysdate+45 from dual;
SYSDATE
——-
06-JUN-2003
ADD_MONTHS
Om te zien welke datum over 6 maanden plaatsvindt, kunnen we de functie ADD_MONTHS gebruiken
Selecteer ADD_MONTHS(SYSDATE,6) uit dual;
ADD_MONTHS
———-
22-OCT-2003
MONTHS_BETWEEN
Om te zien hoeveel maanden er sinds een bepaalde datum zijn verstreken, gebruikt u de functie MONTHS_BETWEEN.
Voorbeeld, om te zien hoeveel maanden er sinds 15-aug-1947 zijn verstreken, geeft u de volgende query.
select months_between(sysdate,to_date(’15-aug-1947′))
from dual;
Months
——
616.553
Om de decimale waarde te elimineren gebruikt u de functie truncate
select trunc(months_between(sysdate,to_date(’15-aug-1947′)))
from dual;
Maanden
——
616
LAST_DAY
Om de laatste datum van de maand van een gegeven datum te zien, gebruikt u de functie LAST_DAY.
select LAST_DAY(sysdate) from dual;
LAST_DAY
——–
31-AUG-2003
NEXT_DAY
Om te zien wanneer een bepaalde dag de volgende is, gebruik de NEXT_DAY functie.
Voorbeeld om te zien wanneer de volgende zaterdag komt, geef de volgende query
select next_day(sysdate) from dual;
NEXT_DAY
———–
09-AUG-2003
EXTRACT
Een EXTRACT datetime functie extraheert en retourneert de waarde van een gespecificeerd datetime veld uit een datetime of interval waarde expressie. Wanneer u een TIMEZONE_REGION of TIMEZONE_ABBR (afkorting) extraheert, is de geretourneerde waarde een tekenreeks die de juiste tijdzonenaam of -afkorting bevat
De syntaxis van de functie EXTRACT is
EXTRACT ( YEAR / MONTH / WEEK / DAY / HOUR / MINUTE / TIMEZONE FROM DATE)
Example
Hieronder ziet u het gebruik van de functie EXTRACT om het jaar uit de huidige datum te extraheren.
select extract(jaar uit sysdate) from dual;
EXTRACT
——-
2003
Geef een antwoord