Tutorial dla Oracle DBA
On 1 stycznia, 2022 by adminFunkcje i operatory daty.
Aby zobaczyć datę i czas systemowy, użyj następujących funkcji :
CURRENT_DATE :zwraca bieżącą datę w strefie czasowej sesji, w wartości w kalendarzu gregoriańskim typu datatype
DATE
SYSDATE :zwraca bieżącą datę i czas.
SYSTIMESTAMP :Funkcja SYSTIMESTAMP zwraca datę systemową, z uwzględnieniem sekund ułamkowych i strefy czasowej
bazy danych. Typem zwrotu jest TIMESTAMP WITH TIME ZONE.
SYSDATE Przykład
Aby zobaczyć bieżącą datę i czas systemowy, należy wykonać następujące zapytanie.
select sysdate from dual;
SYSDATE
——-
8-AUG-03
Format, w jakim wyświetlana jest data, zależy od parametru NLS_DATE_FORMAT.
Na przykład ustaw NLS_DATE_FORMAT na następujący format
alter session set NLS_DATE_FORMAT=’DD-MON-YYYY HH:MIpm’;
Następnie podaj następującą instrukcję
select sysdate from dual;
SYSDATE
——————
8-AUG-2003 03:05pm
Domyślne ustawienie NLS_DATE_FORMAT to DD-MON-YY
CURRENT_DATE Przykład
Aby zobaczyć aktualną datę i czas systemowy wraz ze strefą czasową, użyj funkcji 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 Przykład
Aby zobaczyć aktualną datę i czas systemowy z sekundami ułamkowymi wraz ze strefą czasową, podaj następującą instrukcję
select systimestamp from dual;
SYSTIMESTAMP
——————————-
22-APR-03 08.38.55.538741 AM -07:00
MODELE FORMATU DATY
Aby przetłumaczyć datę na inny łańcuch formatu, możesz użyć funkcji TO_CHAR z formatem daty. Na przykład, aby zobaczyć bieżący dzień możesz wykonać następujące zapytanie
Select to_char(sysdate,’DAY’) „Today” FROM DUAL;
TODAY
——-
THURSDAY
Aby przetłumaczyć wartość znakową, która jest w formacie innym niż domyślny format daty, na wartość daty, możesz użyć funkcji TO_DATE z formatem daty na date
Podobnie jak model formatu „DAY” istnieje wiele innych modeli formatu daty dostępnych w Oracle. Poniższa tabela zawiera listę modeli formatów daty.
FORMAT |
ZNACZENIE |
D |
Dzień tygodnia |
DD |
Dzień miesiąca |
DD |
Dzień roku |
DAY |
Pełny dzień dla np. 'Monday’, 'Tuesday’, 'Wednesday’ |
DY |
Dzień w trzech literach dla np. 'MON’, 'TUE’,’FRI’ |
W |
Tydzień miesiąca |
WW |
Tydzień w roku |
MM |
Miesiąc dwucyfrowy (1-.Jan, 2-Feb,…12-Dec) |
MON |
Miesiąc w trzech znakach jak „Jan”, „Feb”, „Apr” |
MONTH |
Pełny miesiąc jak „January”, „Luty”, „Kwiecień” |
RM |
Miesiąc w znakach rzymskich (I-XII, I-Jan, II-Feb,….XII-Dec) |
Q |
Kwartał miesiąca |
YY |
Dwie ostatnie cyfry roku. |
RRR |
Pełny rok |
Rok |
Rok w słowach takich jak „Nineteen Ninety Nine” |
HHH |
Godziny w formacie dwunastogodzinnym |
HH12 |
Godziny w formacie dwunastogodzinnym |
H24 |
Godziny w formacie 24-godzinnym |
MI |
Minuty |
SS |
Sekundy |
FF |
Sekundy ułamkowe |
SSSSS |
Milisekundy |
J |
Dzień Juliański i.e Days since 1st-Jan-4712BC to till-date |
RR |
Jeśli rok jest mniejszy niż 50 Przyjmuje rok jako 21ST Century. Jeśli rok jest większy niż 50 to przyjmuje rok w 20 wieku. |
sufiksy
TH |
Przywraca th, st, rd lub nd zgodnie z liczbą wiodącą jak 1st , 2nd 3rd 4th |
SP |
Wypisuje numer wiodący |
AM lub PM |
Przywraca AM lub PM zgodnie z czasem |
SPTH |
Przywraca pisaną liczbę porządkową. Dla. Przykład First, Fourth |
Na przykład, aby zobaczyć dzisiejszą datę w następującym formacie
Friday, 7th March, 2014
Podaj następującą instrukcję
select to_char(sysdate,’Day, ddth Month, yyyy’) „Today” from dual;
TODAY
————————
Friday, 7th March, 2014
Na przykład chcesz zobaczyć daty zatrudnienia wszystkich pracowników w następującym formacie
Friday, 8th August, 2003
Wtedy podaj następujące zapytanie.
select to_char(hire_date,’Day, ddth Month, yyyy’) from emp;
TO_DATE Przykład
Funkcja to_char(hire_date,’Day, ddth Month, yyyy’) from emp;
TO_DATE Przykład
Funkcja to_char(hire_date,’Day, ddth Month, yyyy’) służy do konwersji ciągów znaków na wartości dat. Na przykład chcesz zobaczyć, jaki był dzień 15 sierpnia 1947 roku. Używamy funkcji to_date, aby najpierw przekonwertować łańcuch na wartość daty, a następnie przekazać tę wartość do funkcji to_char, aby wyodrębnić dzień.
select to_char(to_date(’15-aug-1947′,’dd-mon-yyyy’),’Day’)
from dual;
TO_CHAR(
——–
Piątek
Aby sprawdzić, ile dni upłynęło od 15-aug-1947, wykonaj następujące zapytanie
select sysdate-to_date(’15-aug-1947′,’dd-mon-yyyy’) from dual;
Teraz chcemy zobaczyć, która data wystąpi po 45 dniach od teraz
select sysdate+45 from dual;
SYSDATE
——-
06-JUN-2003
ADD_MONTHS
Aby zobaczyć, która data wystąpi po 6 miesiącach od teraz, możemy użyć funkcji ADD_MONTHS
Select ADD_MONTHS(SYSDATE,6) from dual;
ADD_MONTHS
———-
22-OCT-2003
MONTHS_BETWEEN
Aby sprawdzić, ile miesięcy upłynęło od danej daty, użyj funkcji MONTHS_BETWEEN.
Na przykład, aby zobaczyć ile miesięcy upłynęło od 15-aug-1947, podaj następujące zapytanie.
select months_between(sysdate,to_date(’15-aug-1947′))
from dual;
Months
——
616.553
Aby wyeliminować wartość dziesiętną, użyj funkcji truncate
select trunc(months_between(sysdate,to_date(’15-aug-1947′)))
from dual;
Months
——
616
LAST_DAY
Aby zobaczyć ostatnią datę miesiąca danej daty, należy użyć funkcji LAST_DAY.
select LAST_DAY(sysdate) from dual;
LAST_DAY
——–
31-AUG-2003
NEXT_DAY
Aby zobaczyć, kiedy dany dzień będzie następny, należy użyć funkcji NEXT_DAY.
Na przykład, aby zobaczyć, kiedy nadejdzie następna sobota, należy wykonać następujące zapytanie
select next_day(sysdate) from dual;
NEXT_DAY
———–
09-AUG-2003
EXTRACT
Funkcja datetime EXTRACT wyodrębnia i zwraca wartość określonego pola datetime z wyrażenia datetime lub wartości interwału. W przypadku wyodrębnienia TIMEZONE_REGION lub TIMEZONE_ABBR (skrót), zwracana wartość jest łańcuchem zawierającym odpowiednią nazwę lub skrót strefy czasowej
Składnia funkcji EXTRACT jest następująca
EXTRACT ( YEAR / MONTH / WEEK / DAY / HOUR / MINUTE / TIMEZONE FROM DATE)
Przykład
Poniżej przedstawiono użycie funkcji EXTRACT do wyodrębnienia roku z bieżącej daty.
select extract(year from sysdate) from dual;
EXTRACT
——-
2003
.
Dodaj komentarz