Tutoriál pro Oracle DBA
On 1 ledna, 2022 by adminDatové funkce a operátory.
Pro zobrazení systémového data a času použijte následující funkce :
CURRENT_DATE :vrací aktuální datum v časovém pásmu relace, v hodnotě gregoriánského kalendáře datového typu
DATE
SYSDATE :Vrací aktuální datum a čas.
SYSTIMESTAMP :Funkce SYSTIMESTAMP vrací systémové datum včetně zlomků sekund a časového pásma
databáze. Vrací typ TIMESTAMP WITH TIME ZONE.
SYSDATE Příklad
Pro zobrazení aktuálního systémového data a času zadejte následující dotaz.
select sysdate from dual;
SYSDATE
——-
8-AUG-03
Formát, ve kterém se datum zobrazí, závisí na parametru NLS_DATE_FORMAT.
Například nastavte NLS_DATE_FORMAT na následující formát
alter session set NLS_DATE_FORMAT=’DD-MON-YYYY HH:MIpm‘;
Poté zadejte následující příkaz
select sysdate from dual;
SYSDATE
——————
8-AUG-2003 03:05:00
Výchozí nastavení NLS_DATE_FORMAT je DD-MON-YY
CURRENT_DATE Příklad
Pro zobrazení aktuálního systémového data a času s časovým pásmem použijte funkci 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 Příklad
Pro zobrazení aktuálního systémového data a času se zlomky sekund s časovou zónou zadejte následující příkaz
select systimestamp from dual;
SYSTIMESTAMP
——————————-
22-APR-03 08.38.55.538741 AM -07:00
MODELY FORMÁTU DATA
Pro převedení data na jiný formát řetězce můžete použít funkci TO_CHAR s formátem data. Například pro zobrazení aktuálního dne můžete zadat následující dotaz
Vyberte to_char(sysdate,’DAY‘) „Dnes“ FROM DUAL;
TODAY
——-
THURSDAY
Chcete-li převést znakovou hodnotu, která je v jiném než výchozím formátu data, na hodnotu data, můžete použít funkci TO_DATE s formátem data na datum
Stejně jako tento model formátu „DAY“ existuje v systému Oracle mnoho dalších modelů formátu data. V následující tabulce jsou uvedeny modely formátu data.
FORMÁT |
VÝZNAM |
D |
Den v týdnu |
DD |
Den v měsíci |
DDD |
Den v roce |
DEN |
Celý den např. ‚Pondělí‘, ‚Úterý‘, ‚Středa‘ |
DEN |
Den na tři písmena např. ‚PO‘, ‚ÚTERÝ‘,’FRI‘ |
W |
Týden v měsíci |
WW |
Týden v roce |
MM |
Měsíc ve dvou číslicích (1-Jan, 2-únor,…12-Prosinec) |
Měsíc |
Měsíc ve třech znacích jako „leden“, „únor“, „duben“ |
Měsíc |
Úplný měsíc jako „leden“, „únor“, „duben“ |
RM |
Měsíc v římských znacích (I-XII, I-Jan, II-Feb,….XII-Dec) |
Q |
Čtvrtina měsíce |
YY |
Poslední dvě číslice roku. |
YYYY |
Celý rok |
YEAR |
Rok ve slovech jako „devatenáct devadesát devět“ |
HH |
Hodiny ve formátu 12 hodin |
HH12 |
Hodiny ve formátu 12 hodin |
H24 |
Hodiny ve 24hodinovém formátu |
MI |
Minuty |
SS |
Sekundy |
FF |
Frakční sekundy |
SSSSS |
Milisekundy |
J |
Julův den i.e Dny od 1. ledna 4712 př. n. l. do dnešního dne |
RR |
Pokud je rok menší než 50 Předpokládá rok jako 21. století. Pokud je rok větší než 50, pak předpokládá rok ve 20. století. |
sufixes
TH |
Vrátí th, st, rd nebo nd podle vedoucího čísla jako 1st , 2. 3. 4. |
SP |
Vypíše vedoucí číslo |
AM nebo PM |
Vrátí AM nebo PM podle času |
SPTH |
Vrátí hláskované pořadové číslo. Pro. Příklad První, Čtvrtý |
Příklad pro zobrazení dnešního data v následujícím formátu
Pátek, 7. března 2014
Dejte následující příkaz
select to_char(sysdate,’Day, ddth Month, yyyy‘) „Dnes“ z dual;
TODAY
————————
Pátek, 7. března 2014
Příklad chcete zobrazit data nástupu všech zaměstnanců v následujícím formátu
Pátek, 8. srpna 2003
Pak zadejte následující dotaz.
select to_char(hire_date,’Day, ddth Month, yyyy‘) from emp;
TO_DATE Příklad
Funkce TO_DATE slouží k převodu řetězců na hodnoty data. Například chcete zjistit, jaký byl den 15. srpna 1947. Pomocí funkce to_date nejprve převedete řetězec na hodnotu data a poté tuto hodnotu předáte funkci to_char, abyste získali den.
select to_char(to_date(’15-aug-1947′,’dd-mon-yyyy‘),’Day‘)
z dual;
TO_CHAR(
——–
Pátek
Chcete-li zjistit, kolik dní uplynulo od 15. srpna 1947, pak zadejte následující dotaz
select sysdate-to_date(’15-aug-1947′,’dd-mon-yyyy‘) from dual;
Nyní chceme zjistit, které datum nastane za 45 dní
select sysdate+45 from dual;
SYSDATE
——-
06-JUN-2003
ADD_MONTHS
Chceme-li zjistit, které datum nastane za 6 měsíců od teď, můžeme použít funkci ADD_MONTHS
Select ADD_MONTHS(SYSDATE,6) from dual;
ADD_MONTHS
———-
22-OCT-2003
MONTHS_BETWEEN
Chceme-li zjistit, kolik měsíců uplynulo od určitého data, použijeme funkci MONTHS_BETWEEN.
Chcete-li například zjistit, kolik měsíců uplynulo od 15. srpna 1947, zadejte následující dotaz.
select months_between(sysdate,to_date(’15-aug-1947′))
from dual;
Months
——
616.553
Pro odstranění desetinné hodnoty použijte funkci truncate
select trunc(months_between(sysdate,to_date(’15-aug-1947′)))
from dual;
Months
——
616
LAST_DAY
Chcete-li zobrazit poslední datum měsíce daného data, použijte funkci LAST_DAY.
select LAST_DAY(sysdate) from dual;
LAST_DAY
——–
31-AUG-2003
NEXT_DAY
Chcete-li zjistit, kdy bude následující den , použijte funkci NEXT_DAY.
Příklad pro zobrazení, kdy bude příští sobota, zadejte následující dotaz
select next_day(sysdate) from dual;
NEXT_DAY
———–
09-AUG-2003
EXTRACT
Funkce EXTRACT datetime extrahuje a vrací hodnotu zadaného pole datetime z výrazu datetime nebo intervalové hodnoty. Při extrakci TIMEZONE_REGION nebo TIMEZONE_ABBR (zkratka) je vrácenou hodnotou řetězec obsahující příslušný název nebo zkratku časového pásma
Syntaxe funkce EXTRACT je
EXTRACT ( YEAR / MONTH / WEEK / DAY / HOUR / MINUTE / TIMEZONE FROM DATE)
Příklad
Následující příklad ukazuje použití funkce EXTRACT pro extrakci roku z aktuálního data.
select extract(year from sysdate) from dual;
EXTRACT
——-
2003
.
Napsat komentář