pl sql datetime format
Dowiedz się o formacie PL SQL Datetime i kilku przydatnych funkcjach związanych z datą i godziną, znacznikiem czasu i interwałem:
w PL / SQL Wyzwalacze w Seria PL SQL , poznaliśmy ich rodzaje, zastosowanie i zalety.
W tym artykule omówimy datę i godzinę w PL / SQL oraz niektóre funkcje dotyczące typów danych Datetime, Timestamp i Interval. Ponadto wykonamy kilka podstawowych operacji na Datetime i Interval.
Zacznijmy od dyskusji !!
Czego się nauczysz:
PL SQL Datetime Format
PL / SQL ma typ danych data / czas, który pozwala nam przechowywać i obliczać daty, interwały i godziny. Zmienna typu data lub godzina zawiera wartość o nazwie DateTime. Zmienna, która przechowuje typ danych interwału, nazywana jest interwałem. Każdy z tych typów danych ma pola, które ustawiają wartość.
Typy danych DateTime są wymienione poniżej:
- ZNAK CZASU
- TIMESTAMP ZE STREFĄ CZASOWĄ
- ZNAK CZASOWY Z LOKALNĄ STREFĄ CZASOWĄ
- DATA
Typy danych Interval są wymienione poniżej:
- ODSTĘP DZIEŃ DO DRUGI
- ODSTĘP OD ROKU DO MIESIĄCA
DATA
Czasy danych o stałej długości są przechowywane w typie danych DATE. Zawiera godzinę od północy w sekundach. Część daty wskazuje na pierwszy dzień bieżącego miesiąca, a sekcja czasu wskazuje na północ. Przechowuje informacje o dacie i godzinie zarówno w postaci liczb, jak i znaków.
SYSDATE to funkcja daty, która pobiera aktualny czas i datę. Właściwy zakres dat to okres od 1 stycznia 4712 rpne do 31 grudnia 9999 rne. Wartości znaków w formacie domyślnym (określonym przez parametr inicjalizacji Oracle NLS_DATE_FORMAT) są w naturalny sposób konwertowane przez PL / SQL na wartości DATE.
Możemy stosować operacje matematyczne, takie jak dodawanie i odejmowanie na datach. PL / SQL interpretuje literały liczb całkowitych w postaci dni. Na przykład, SYSDATE + 1 punkty do jutra.
ZNAK CZASU
Typ danych datownika jest rozszerzeniem typu danych DATE. Służy do przechowywania roku, miesiąca, godziny i sekundy. Domyślny format sygnatury czasowej jest określany przez parametr inicjalizacji Oracle NLS_TIMESTAMP_FORMAT.
Składnia:
TIMESTAMP[(precision)]
W tym przypadku precyzja nie jest parametrem obowiązkowym i wskazuje na liczbę cyfr, która znajduje się w części ułamkowej pola sekund. Precyzja powinna być dowolną liczbą całkowitą od 0 do 9. Wartość domyślna to 6.
TIMESTAMP ZE STREFĄ CZASOWĄ
Ten typ danych jest rozszerzeniem typu danych TIMESTAMP i zawiera przesunięcie strefy czasowej. Przemieszczenie strefy czasowej to różnica czasu (w godzinach i minutach) między czasem lokalnym a uniwersalnym czasem koordynowanym (UTC).
Domyślna sygnatura czasowa z formatem strefy czasowej jest określana przez parametr inicjujący Oracle NLS_TIMESTAMP_TZ_FORMAT. Składnia:
TIMESTAMP[(precision)] WITH TIME ZONE
Tutaj precyzja nie jest parametrem obowiązkowym i wskazuje na liczbę cyfr, która znajduje się w części ułamkowej pola sekund. Precyzja powinna być dowolną liczbą całkowitą od 0 do 9. Wartość domyślna to 6.
Strefę czasową możemy wspomnieć symbolami. Może mieć postać długą, np. „USA / Pacyfik”, lub w skrócie „PDT”, lub ich kombinację. Dlatego ten typ danych jest używany do pokrycia i obliczania informacji w różnych lokalizacjach geograficznych.
różnica między testem jednostkowym a testem integracji
ZNAK CZASOWY Z LOKALNĄ STREFĄ CZASOWĄ
Znacznik czasu z typem danych lokalnej strefy czasowej jest rozszerzeniem typu danych TIMESTAMP i zawiera przesunięcie strefy czasowej. Przemieszczenie strefy czasowej to różnica czasu (w godzinach i minutach) między czasem lokalnym a uniwersalnym czasem koordynowanym (UTC).
Składnia:
TIMESTAMP [(precision)] WITH LOCAL TIME ZONE
Tutaj precyzja nie jest parametrem obowiązkowym i wskazuje na liczbę cyfr, która znajduje się w części ułamkowej pola sekundy. Precyzja powinna być dowolną liczbą całkowitą od 0 do 9. Wartość domyślna to 6.
TIMESTAMP Z LOKALNĄ STREFĄ CZASOWĄ różni się od TIMESTAMP Z LOKALNĄ STREFĄ CZASOWĄ tym, że gdy wstawiamy wartość do bazy danych, wartość jest ustawiona na strefę czasową bazy danych, a przesunięcie strefy czasowej nie jest przechowywane w kolumnie bazy danych. Jednak po pobraniu wartości jest ona zwracana w sesji lokalnej strefy czasowej.
ODSTĘP OD ROKU DO MIESIĄCA
Ten typ danych służy do przechowywania i obliczania przedziału lat i miesięcy.
Składnia:
INTERVAL YEAR [(precision)] TO MONTH
Tutaj dokładność to liczba cyfr w polu roku. Precyzja powinna być dowolną liczbą całkowitą od 0 do 4. Wartość domyślna to 2.
ODSTĘP ROKU DO SEKUND
Typ danych między rokiem a drugim służy do przechowywania i obliczania interwałów dni, godzin, minut i sekund.
Składnia:
INTERVAL DAY [(l_precision)] TO SECOND [(fractional_s_precision)]
Tutaj l_precision i fractional_s_precision są liczbą cyfr odpowiednio w polach dni i sekund.
Precyzja powinna być dowolną liczbą całkowitą od 0 do 9. Wartości domyślne są ustawione odpowiednio na 2 i 6.
Wartości pól: data i czas i przedział
- DRUGA: Wartości prawidłowego zakresu DateTime mieszczą się w zakresie od 00 do 59,9 (m), gdzie m oznacza ułamki czasu w sekundach. Wartości dla prawidłowego zakresu interwałów mieszczą się w zakresie od 00 do 59,9 (m), gdzie m oznacza ułamki sekund interwału.
- MINUTA: Wartości prawidłowego zakresu dat i godzin mieszczą się w zakresie od 00 do 59. Wartości dla prawidłowego zakresu interwałów mieszczą się w zakresie od 0 do 59.
- GODZINA: Wartości prawidłowego zakresu dat i godzin mieszczą się w zakresie od 00 do 23. Wartości dla prawidłowego zakresu interwałów mieszczą się w zakresie od 0 do 23.
- DZIEŃ: Wartości dla prawidłowego zakresu DateTime mieszczą się w zakresie od 01 do 31 (ograniczone wartościami YEAR i MIESIĄC, zgodnie z regułami kalendarza ustawień regionalnych). Wartością prawidłowego zakresu interwału jest dowolna niezerowa liczba całkowita.
- MIESIĄC: Wartości dla prawidłowego zakresu dat i godzin mieszczą się w zakresie od 01 do 12. Wartości dla prawidłowego zakresu interwałów mieszczą się w zakresie od 0 do 11.
- ROK: Wartości prawidłowego zakresu dat i godzin mieszczą się w zakresie od -4712 do 9999, nie licząc roku 0. Wartość dla prawidłowego zakresu interwałów to dowolna niezerowa liczba całkowita.
- TIMEZONE_HOUR: Wartości dla prawidłowego zakresu DateTime to od -12 do 14, obejmuje zmiany czasu letniego. Nie dotyczy to prawidłowego zakresu interwałów.
- TIMEZONE_MINUTE: Wartości prawidłowego zakresu dat i godzin mieszczą się w zakresie od 00 do 59. Nie dotyczy to prawidłowego zakresu interwałów.
- TIMEZONE_REGION: Wartości prawidłowego zakresu dat i godzin nie mają zastosowania w przypadku DATE ani TIMESTAMP. Nie dotyczy to prawidłowego zakresu interwałów.
- TIMEZONE_ABBR: Wartości prawidłowego zakresu dat i godzin nie mają zastosowania w przypadku DATE ani TIMESTAMP. Nie dotyczy to prawidłowego zakresu interwałów.
Funkcje PL SQL w czasie i czasie
Tutaj m i n zawierają wartości daty i godziny.
Sl No. | Nazwa | Cele |
---|---|---|
7 | SYSDATE () | Pobiera bieżącą datę i godzinę. |
1 | LAST_DAY (min.) | Pobiera ostatni dzień miesiąca. |
dwa | ADD_MONTHS (m, n) | Suma miesięcy i n miesięcy. |
3 | MONTHS_BETWEEN (m; n) | Pobiera liczbę miesięcy między m a n. |
4 | NEXT_DAY (m, dzień) | Pobiera datę i godzinę następnego dnia po m. |
5 | NASTĘPNYM RAZEM | Pobiera godzinę / dzień ze strefy czasowej żądanej przez użytkownika. |
6 | ZAOKR (m [, jednostka]) | Rundy m. |
8 | LICZBA.CAŁK (m [, jednostka]) | Obcina m. |
Funkcje języka PL SQL w sygnaturze czasowej
Tutaj m zawiera wartość znacznika czasu.
Sl No. | Nazwa | Cele |
---|---|---|
7 | TO_TIMESTAMP_TZ (m, [format]) | Konwertuje ciąg m na TIMESTAMP WITH TIMEZONE. |
1 | CURRENT_TIMESTAMP () | Pobiera TIMESTAMP WITH TIMEZONE z bieżącą sesją i strefą czasową sesji. |
dwa | FROM_TZ (m, strefa_czasowa) | Konwertuje m TIMESTAMP i wymienia strefę_czasu na TIMESTAMP WITH TIMEZONE. |
3 | LOCALTIMESTAMP () | Pobiera TIMESTAMP z czasem lokalnym w strefie czasowej sesji. |
4 | SYSTEMTIMESTAMP () | Pobiera TIMESTAMP WITH TIMEZONE z aktualnym czasem bazy danych i strefą czasową bazy danych. |
5 | SYS_EXTRACT_UTC (m) | Konwertuje m TIMESTAMP WITH TIMEZONE na TIMESTAMP z datą i godziną UTC. |
6 | TO_TIMESTAMP (m; [format]) | Konwertuje ciąg m na TIMESTAMP. |
Implementacja kodu z funkcjami Datetime i Timestamp:
BEGIN /* get the current date and time */ DBMS_OUTPUT.put_line ('The output of SYSDATE is:'|| SYSDATE); /* get the TIMESTAMP WITH TIME ZONE with database time and time zone */ DBMS_OUTPUT.put_line ('The output of SYSTIMESTAMP is:' ||SYSTIMESTAMP); /* get the TIMESTAMP with local time in session time zone */ DBMS_OUTPUT.put_line ('The output of LOCALTIMESTAMP:' ||LOCALTIMESTAMP); /*get the TIMESTAMP WITH TIME ZONE with present session time with session time zone */ DBMS_OUTPUT.put_line ('The output of CURRENT_TIMESTAMP:'||CURRENT_TIMESTAMP); /*convert string to TIMESTAMP*/ DBMS_OUTPUT.put_line ('The output of TIMESTAMP:'||TO_TIMESTAMP('12-JAN-2011')); /*to add months*/ DBMS_OUTPUT.put_line ('The output of ADD_MONTHS:'||ADD_MONTHS(SYSDATE,1)); /*to get date and time of following day*/ DBMS_OUTPUT.put_line ('The output of NEXT_DAY:'||NEXT_DAY(SYSDATE,'MONDAY')); /*to truncate date */ DBMS_OUTPUT.put_line ('The output of TRUNC:'||TRUNC(SYSDATE)); /*to get the last day of month */ DBMS_OUTPUT.put_line ('The output of LAST_DAY:'||LAST_DAY (SYSDATE)); END; /
Wyjście powyższego kodu:
Funkcje języka PL SQL w przedziale
Sl No. | Nazwa | Cele |
---|---|---|
1 | NUMTODSINTERVAL (m, interwał) | Przekształca liczbę m na INTERVAL DAY TO SECOND. |
dwa | NUMTOYMINTERVAL (m, interwał) | Przekształca liczbę m na INTERVAL YEAR TO MONTH. |
3 | TO_DSINTERVAL (m) | Przekształca ciąg m na INTERVAL DAY TO SECOND. |
4 | TO_YMINTERVAL (m) | Przekształca ciąg m na INTERVAL YEAR TO MONTH. |
Działania arytmetyczne w czasie i przedziale czasu
PL / SQL umożliwia tworzenie wyrażeń DateTime i interwałowych.
Lista operatorów, które można zastosować, to:
- Jeśli pierwszym operandem jest DateTime, a drugim operandem jest interwał, a chcemy zastosować do nich operator (+), to wynikowa wartość jest typu DateTime.
- Jeśli pierwszym operandem jest DateTime, a drugim operandem jest interwał, a chcemy zastosować do nich operator (-), to wynikowa wartość jest typu DateTime.
- Jeśli pierwszy operand to interwał, a drugi operand to DateTime i chcemy zastosować do nich operator (+), to wynikowa wartość jest typu DateTime.
- Jeśli pierwszy operand to DateTime, a drugi operand to DateTime i chcemy zastosować do nich operator (-), to wynikowa wartość jest typu interwałowego.
- Jeśli pierwszym operandem jest interwał, a drugim operandem jest interwał i chcemy zastosować do nich operator (+), to wynikowa wartość jest typu interwału.
- Jeśli pierwszym operandem jest interwał, a drugim operandem jest interwał i chcemy zastosować do nich operator (-), to wynikowa wartość jest typu interwału.
- Jeśli pierwszy operand to interwał, a drugi operand jest liczbowy, a chcemy zastosować do nich operator (*), to wynikowa wartość jest typu interwałowego.
- Jeśli pierwszy operand jest liczbowy, a drugi operand jest interwałem i chcemy zastosować do nich operator (*), to wynikowa wartość jest typu interwału.
- Jeśli pierwszy operand to interwał, a drugi operand jest liczbowy i chcemy zastosować do nich operator (/), to wynikowa wartość jest typu interwałowego.
Implementacja kodu z niektórymi operacjami arytmetycznymi w Datetime i Interval.
DECLARE c_dt TIMESTAMP; r_dt TIMESTAMP; s_dt TIMESTAMP; BEGIN c_dt := SYSTIMESTAMP; r_dt:= c_dt + TO_DSINTERVAL ('1600 5:20:1'); DBMS_OUTPUT.PUT_LINE ('Addition of datetime and Interval:' ||r_dt); s_dt:= c_dt - TO_DSINTERVAL ('1600 5:20:1'); DBMS_OUTPUT.PUT_LINE ('Subtraction of datetime and Interval:' || s_dt); END;
Wyjście powyższego kodu:
Wyjaśnienie powyższego kodu:
- W kodzie („1600 5: 20: 1”) oznacza 1600 dni, 5 godzin, 20 minut i 1 sekundę .
- Na pierwszym wyjściu pierwszym operandem jest DateTime, a drugim operandem jest interwał. Po ich dodaniu otrzymaliśmy datę 24-DEC z czasem AM.
- W drugim wyjściu pierwszym operandem jest DateTime, a drugim operandem jest interwał. Po odjęciu pierwszego od drugiego otrzymaliśmy datę 20-MAR z czasem po południu.
Często zadawane pytania i odpowiedzi
P # 1) Jaka jest obecna sygnatura czasowa?
Odpowiedź: Bieżący znacznik czasu lub CURRENT_TIMESTAMP opisuje znacznik czasu, który jest zależny od odczytu czasu zegara dziennego podczas wykonywania instrukcji SQL na serwerze.
przykład przypadków testowych dla aplikacji internetowej
Pytanie 2) Co Sysdate zwraca w Oracle?
Odpowiedź: Funkcja Sysdate () pobiera bieżącą datę i godzinę skonfigurowaną w systemie operacyjnym, w którym znajduje się baza danych. Typ danych wartości, która jest przez nią zwracana, to DATA.
Pytanie 3) Która funkcja PL / SQL poda aktualną datę i godzinę systemową?
Odpowiedź: Funkcja PL / SQL, która podaje aktualną datę i godzinę systemową, to SYSDATE ().
Pytanie 4) Co to jest DUAL SQL?
Odpowiedź: DUAL to tabela bazy danych tworzona domyślnie przez Oracle wraz ze słownikiem danych. Zawiera jeden wiersz i jedną kolumnę. DUAL jest własnością SYS, ale może być używany przez wszystkich użytkowników.
Q # 5) Jak zadeklarować zmienną daty w PL SQL?
Odpowiedź: Możemy zadeklarować zmienną date w PL / SQL o składni podanej poniżej:
DECLARE stdt DATE := to_date ('06/06/2006', 'DD/MM/YYYY');
P # 6) Jaki jest format daty w Oracle?
Odpowiedź: Standardowy format daty w Oracle dla danych wejściowych i wyjściowych to „DD / MON / RR”. Jest to konfigurowane przez wartość w parametrze NLS_DATE_FORMAT.
Wniosek
W tym samouczku dotyczącym formatu daty i godziny PL SQL omówiliśmy szczegółowo kilka podstawowych pojęć dotyczących daty i godziny PL / SQL, które są niezbędne do wykorzystania ich w programowaniu.
Omówiliśmy następujące tematy wymienione poniżej:
- Data i godzina.
- Działa wokół daty i godziny, znacznika czasu i interwału.
- Operacje arytmetyczne na Datetime i Interval.
- Wartości pól w datetime i Interval.
rekomendowane lektury
- Funkcje daty i czasu w C ++ z przykładami
- Python DateTime Tutorial z przykładami
- C # DateTime Tutorial: Praca z datą i godziną w C # z przykładem
- Podprogramy: PL SQL Procedury i funkcje z przykładami
- Funkcje daty VBScript: format daty, funkcje DateAdd i cDate
- Samouczek języka PL SQL dla początkujących z przykładami | Co to jest PL / SQL