Tutorial for Oracle DBA
On január 1, 2022 by adminDátumfüggvények és operátorok.
A rendszer dátumának és idejének megtekintéséhez használja a következő függvényeket :
CURRENT_DATE :visszaadja az aktuális dátumot a munkamenet időzónájában, az
DATE adattípusú gregorián naptárban megadott értékben
SYSDATE :Visszaadja az aktuális dátumot és időt.
SYSTIMESTAMP :A SYSTIMESTAMP függvény az adatbázis rendszerdátumát adja vissza, beleértve a tört másodperceket és
az időzónát. A visszatérési típus TIMESTAMP WITH TIME ZONE.
SYSDATE Példa
Az aktuális rendszerdátum és -idő megtekintéséhez adja meg a következő lekérdezést.
select sysdate from dual;
SYSDATE
——-
8-AUG-03
A dátum megjelenítésének formátuma az NLS_DATE_FORMAT paramétertől függ.
Az NLS_DATE_FORMAT-ot például állítsa a következő formátumra
alter session set NLS_DATE_FORMAT=’DD-MON-YYYY HH:MIpm’;
Ezután adja meg a következő utasítást
select sysdate from dual;
SYSDATE
——————
8-AUG-2003 03:05pm
A NLS_DATE_FORMAT alapértelmezett beállítása DD-MON-YY
CURRENT_DATE Példa
Az aktuális rendszerdátum és idő megtekintéséhez az időzónával együtt használja a CURRENT_DATE függvényt
ALTER SESSION SET TIME_ZONE = ‘-4:0’;
ALTER SESSION SET NLS_DATE_FORMAT = ‘DD-MON-YYYYYY 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 Példa
Az aktuális rendszerdátum és -idő megtekintéséhez tört másodpercekkel és időzónával a következő utasítással
select systimestamp from dual;
SYSTIMESTAMP
——————————-
22-APR-03 08.38.55.538741 AM -07:00
DATE FORMAT MODELLEK
A dátumot más formátumú karakterláncra fordíthatjuk a TO_CHAR függvénnyel dátumformátummal. Például az aktuális nap megtekintéséhez a következő lekérdezést adhatja meg
Select to_char(sysdate,’DAY’) “Today” FROM DUAL;
TODAY
——-
THURSDAY
Az alapértelmezett dátumformátumtól eltérő formátumú karakteres értéket dátumértékre fordíthatjuk a TO_DATE függvényt dátumformátummal dátumra
Ez a “DAY” formátummodellhez hasonlóan számos más dátumformátum modell is elérhető az Oracle-ben. A következő táblázat a dátumformátum-modelleket sorolja fel.
FORMAT |
MEANING |
D |
Day of the week |
DD |
A hónap napja |
DDD |
Az év napja |
DAY |
Teljes nap pl. ‘Monday’, ‘Tuesday’, ‘Wednesday’ |
DY |
Day in three letters for ex. ‘MON’, ‘TUE’,’FRI’ |
W |
A hónap hete |
WW |
Az év hete |
MM |
Hónap két számjeggyel (1-Jan, 2-február,…12-Dec) |
MON |
Hónap három számjegyben, mint “Jan”, “Feb”, “Apr” |
MONTH |
Teljes hónap, mint “január”, “Február”, “Április” |
RM |
Hónap római betűkkel (I-XII, I-Jan, II-Feb,….XII-Dec) |
Q |
A hónap negyede |
YY |
Az év utolsó két számjegye. |
ÉÉÉÉÉÉ |
Teljes év |
ÉV |
Az év olyan szavakkal, mint “Nineteen Ninety Nine” |
HH |
Órák 12 órás formátumban |
HH12 |
Órák 12 órás formátumban |
HH24 |
Órák 24 órás formátumban |
MI |
Minute |
SS |
Szekundumok |
FF |
Millimásodperc |
SSSSS |
Millimásodperc |
J |
Júliusi nap i.e Napok a Kr. e. 1-Jan-4712 óta a mai napig |
RRR |
Ha az év kevesebb, mint 50 Feltételezzük, hogy az év a 21. század. Ha az év nagyobb, mint 50, akkor feltételezi, hogy az év a 20. században van. |
kiegészítők
TH |
A vezető számnak megfelelően th, st, rd vagy nd, mint az 1. , 2. 3. 4. |
SP |
A vezető számot írja ki |
AM vagy PM |
Az időnek megfelelően AM vagy PM |
SPTH |
Az időnek megfelelően betűzött rendszámot ad vissza. For. Példa First, Fourth |
A mai dátumot például a következő formátumban szeretné látni
Friday, 7th March, 2014
A következő utasítással
select to_char(sysdate,’Day, ddth Month, yyyy’) “Today” from dual;
TODAY
————————
Friday, 7th March, 2014
Például az összes alkalmazott felvételi dátumát a következő formátumban szeretné látni
Friday, 8th August, 2003
Ezután adja a következő lekérdezést.
select to_char(hire_date,’Day, ddth Month, yyyy’) from emp;
TO_DATE Példa
To_Date függvény a karakterláncok dátumértékké alakítására szolgál. Például azt szeretnénk látni, hogy mi volt a nap 1947. augusztus 15-én. A to_date függvénnyel a karakterláncot először dátumértékké alakítja, majd ezt az értéket átadja a to_char függvénynek a nap kinyeréséhez.
select to_char(to_date(’15-aug-1947′,’dd-mon-yyyyyy’),’Day’)
from dual;
TO_CHAR(
——–
Péntek
Hogy megnézzük, hány nap telt el 1947. aug. 15. óta, akkor adjuk meg a következő lekérdezést
select sysdate-to_date(’15-aug-1947′,’dd-mon-yyyyyy’) from dual;
Most azt szeretnénk látni, hogy melyik dátum következik be 45 nap múlva
select sysdate+45 from dual;
SYSDATE
——-
06-JUN-2003
ADD_MONTHS
Az ADD_MONTHS függvénnyel
Select ADD_MONTHS(SYSDATE,6) from dual;
ADD_MONTHS
———-
22-OCT-2003
MONTHS_BETWEEN
Hogy megnézzük, hány hónap telt el egy adott dátum óta, használjuk a MONTHS_BETWEEN függvényt.
Példa: Ha azt szeretné látni, hány hónap telt el 1947. augusztus 15. óta, adja meg a következő lekérdezést.
select months_between(sysdate,to_date(’15-aug-1947′))
from dual;
Months
——
616.553
A tizedes érték eltávolításához használja a truncate függvényt
select trunc(months_between(sysdate,to_date(’15-aug-1947′)))
from dual;
Hónapok
——
616
LAST_DAY
Az adott dátum hónap utolsó dátumának megtekintéséhez használja a LAST_DAY függvényt.
select LAST_DAY(sysdate) from dual;
LAST_DAY
——–
31-AUG-2003
NEXT_DAY
Az adott nap következő napjának megtekintéséhez használja a NEXT_DAY függvényt.
Példa: Ahhoz, hogy megnézzük, mikor jön a következő szombat, adjuk meg a következő lekérdezést
select next_day(sysdate) from dual;
NEXT_DAY
———–
09-AUG-2003
EXTRACT
Az EXTRACT datetime függvény egy megadott datetime mező értékét vonja ki és adja vissza egy datetime vagy intervallum érték kifejezésből. TIMEZONE_REGION vagy TIMEZONE_ABBR (rövidítés) kivonásakor a visszaadott érték a megfelelő időzóna nevét vagy rövidítését tartalmazó karakterlánc
Az EXTRACT függvény szintaxisa
EXTRACT ( YEAR / MONTH / WEEK / DAY / HOUR / MINUTE / TIMEZONE FROM DATE)
Példa
A következőkben az EXTRACT függvény használatát mutatjuk be az aktuális dátum évszámának kivonására.
select extract(year from sysdate) from dual;
EXTRACT
——-
2003
Vélemény, hozzászólás?