Drukuj      Otwórz Pomoc bezpośrednią w wersji PDF


Poprzedni temat

Następny temat

Funkcje kalendarzowe data/godzina

Funkcje kalendarzowe data/godzina wykonują operacje na danych typu data, godzina oraz data i godzina. (Typ "data i godzina" jest też nazywany "znacznikiem czasu"; stanowi kombinację daty i godziny.)

Wszystkie funkcje związane z datą są zgodne z normą ISO 8601. Dotyczy to szczególnie funkcji typu Week_Of_Year i Week_Of_Quarter, gdzie pierwszym tygodniem roku jest pierwszy pełny tydzień obejmujący czwartek. Szczegółowe informacje o sposobie obliczania funkcji dat zawiera norma ISO 8601.

Current_Date

Zwraca bieżącą datę. Data jest określana przez komputer. Wartość nie zawiera składnika godzin.

Składnia:

CURRENT_DATE

Current_Time

Zwraca bieżącą godzinę. Godzina jest określana przez komputer. Wartość nie zawiera składnika daty.

Uwaga: Za pomocą tej funkcji jest pobierana godzina bieżąca w momencie uruchomienia raportu. Korzystanie z tej funkcji w analitycznym obszarze zainteresowań uniemożliwia zapisywanie raportu w pamięci podręcznej, co powoduje zmniejszenie wydajności.

Składnia:

CURRENT_TIME (n)

gdzie:

n

Dowolna liczba całkowita reprezentująca liczbę miejsc dziesiętnych wyświetlanych dla sekund ułamkowych. Argument ten jest opcjonalny; jeśli nie zostanie podany, funkcja będzie stosowała precyzję domyślną.

Current_TimeStamp

Zwraca bieżącą datę i godzinę (znacznik czasu). Data i godzina są określane przez komputer.

Uwaga: Za pomocą tej funkcji jest pobierana godzina bieżąca w momencie uruchomienia raportu. Korzystanie z tej funkcji w analitycznym obszarze zainteresowań uniemożliwia zapisywanie raportu w pamięci podręcznej, co powoduje zmniejszenie wydajności.

Składnia:

CURRENT_TIMESTAMP (n)

gdzie:

n

Dowolna liczba całkowita reprezentująca liczbę miejsc dziesiętnych wyświetlanych dla sekund ułamkowych. Argument ten jest opcjonalny; jeśli nie zostanie podany, funkcja będzie stosowała precyzję domyślną.

Day_Of_Quarter

Zwraca liczbę (od 1 do 92) odpowiadającą dniowi kwartału, w którym przypada podana data.

Składnia:

DAY_OF_QUARTER (wyrażenie_daty)

gdzie:

wyrażenie_daty

Dowolne wyrażenie, którego wynikiem jest data.

DayName

Zwraca nazwę (po angielsku) dnia tygodnia podanej daty.

Składnia:

DAYNAME (wyrażenie_daty)

gdzie:

wyrażenie_daty

Dowolne wyrażenie, którego wynikiem jest data.

DayOfMonth

Zwraca liczbę odpowiadającą dniowi miesiąca podanej daty.

Składnia:

DAYOFMONTH (wyrażenie_daty)

gdzie:

wyrażenie_daty

Dowolne wyrażenie, którego wynikiem jest data.

DayOfWeek

Zwraca liczbę (od 1 do 7) odpowiadającą dniowi tygodnia podanej daty. Liczba 1 odpowiada niedzieli, a liczba 7 — sobocie.

Składnia:

DAYOFWEEK (wyrażenie_daty)

gdzie:

wyrażenie_daty

Dowolne wyrażenie, którego wynikiem jest data.

DayOfYear

Zwraca liczbę (od 1 do 366) odpowiadającą dniowi roku podanej daty.

Składnia:

DAYOFYEAR (wyrażenie_daty)

gdzie:

wyrażenie_daty

Dowolne wyrażenie, którego wynikiem jest data.

Hour

Zwraca liczbę (od 0 do 23) odpowiadającą godzinie podanego czasu. Na przykład 0 odpowiada północy, a 23 — godzinie 11 w nocy.

Składnia:

HOUR (wyrażenie_godziny)

gdzie:

wyrażenie_godziny

Dowolne wyrażenie, którego wynikiem jest godzina.

Minute

Zwraca liczbę (od 0 do 59) odpowiadającą minucie podanej godziny.

Składnia:

MINUTE (wyrażenie_godziny)

gdzie:

wyrażenie_godziny

Dowolne wyrażenie, którego wynikiem jest godzina.

Month

Zwraca liczbę (od 1 do 12) odpowiadającą miesiącowi podanej daty.

Składnia:

MONTH (wyrażenie_daty)

gdzie:

wyrażenie_daty

Dowolne wyrażenie, którego wynikiem jest data.

Month_Of_Quarter

Zwraca liczbę (od 1 do 3) odpowiadającą miesiącowi kwartału podanej daty.

Składnia:

MONTH_OF_QUARTER (wyrażenie_daty)

gdzie:

wyrażenie_daty

Dowolne wyrażenie, którego wynikiem jest data.

MonthName

Zwraca nazwę (po angielsku) miesiąca podanej daty.

Składnia:

MONTHNAME (wyrażenie_daty)

gdzie:

wyrażenie_daty

Dowolne wyrażenie, którego wynikiem jest data.

Now

Zwraca bieżącą datę i godzinę (znacznik czasu). Funkcja NOW jest odpowiednikiem funkcji CURRENT_TIMESTAMP.

Uwaga: Za pomocą tej funkcji jest pobierana godzina bieżąca w momencie uruchomienia raportu. Korzystanie z tej funkcji w analitycznym obszarze zainteresowań uniemożliwia zapisywanie raportu w pamięci podręcznej, co powoduje zmniejszenie wydajności.

Składnia:

NOW ()

Quarter_Of_Year

Zwraca liczbę (od 1 do 4) odpowiadającą kwartałowi roku podanej daty.

Składnia:

QUARTER_OF_YEAR (wyrażenie_daty)

gdzie:

wyrażenie_daty

Dowolne wyrażenie, którego wynikiem jest data.

Second

Zwraca liczbę (od 0 do 59) odpowiadającą sekundzie podanej godziny.

Składnia:

SECOND (wyrażenie_godziny)

gdzie:

wyrażenie_godziny

Dowolne wyrażenie, którego wynikiem jest godzina.

TimestampAdd

Funkcja TimestampAdd dodaje określoną liczbę przedziałów czasu do podanej daty i godziny (znacznika czasu). Zwracana jest jedna data i godzina.

Składnia:

TimestampAdd (przedział_czasu, wyrażenie_całkowitoliczbowe, wyrażenie_znacznika_czasu)

gdzie:

przedział_czasu

Określony przedział czasu. Dozwolone wartości to:

SQL_TSI_SECOND

SQL_TSI_MINUTE

SQL_TSI_HOUR

SQL_TSI_DAY

SQL_TSI_WEEK

SQL_TSI_MONTH

SQL_TSI_QUARTER

SQL_TSI_YEAR

wyrażenie_całkowitoliczbowe

Dowolne wyrażenie dające w wyniku liczbę całkowitą. Określa liczbę dodawanych przedziałów czasu.

wyrażenie_znacznika_czasu

Znacznik czasu (data i godzina) używany w obliczeniu.

Jeśli do funkcji zostanie przekazany argument wyrażenie_całkowitoliczbowe o wartości Null lub argument wyrażenie_znacznika_czasu o wartości Null, to funkcja zwróci wartość Null.

W najprostszej sytuacji funkcja ta dodaje podaną wartość całkowitoliczbową do odpowiedniego składnika znacznika czasu, opierając się przy tym na podanym przedziale czasu. Dodanie tygodnia powoduje dodanie siedmiu dni, a dodanie kwartału — trzech miesięcy. Ujemna wartość całkowitoliczbowa oznacza odejmowanie (cofanie się w czasie).

Przekroczenie zakresu danego składnika (np. 60 sekund, 24 godzin, 12 miesięcy itd.) wymaga dodania odpowiedniej wartości do następnego składnika. Na przykład w przypadku dodawania przedziałów czasu do składnika "dzień" znacznika czasu funkcja bierze pod uwagę przekroczenie zakresu i uwzględnia liczbę dni w danym miesiącu (dotyczy to także lat przestępnych, gdy luty ma 29 dni).

W przypadku dodawania przedziałów czasu do składnika "miesiąc" znacznika czasu funkcja sprawdza, czy uzyskany znacznik czasu (data i godzina) ma odpowiednią liczbę dni dla składnika "dzień". Na przykład dodanie 1 miesiąca do daty 2000-05-31 nie da w wyniku daty 2000-06-31, ponieważ czerwiec nie ma 31 dni. Funkcja zredukuje składnik "dzień" do ostatniego dnia miesiąca, w tym przykładzie do dnia 2000-06-30.

Podobny problem pojawia się, gdy przedział czasu jest dodawany do składnika "rok" znacznika czasu, w którym składnikiem "miesiąc" jest luty, a składnikiem "dzień" jest 29 (tj. ostatni dzień lutego w roku przestępnym). Jeśli wynikowy znacznik czasu nie przypada w roku przestępnym, to funkcja zredukuje składnik "dzień" do wartości 28.

Poniżej zamieszczono przykłady użycia funkcji TimestampAdd:

W poniższym przykładzie zapytanie dotyczy znacznika czasu uzyskanego w wyniku dodania 3 dni do 2000-02-27 14:30:00. Ponieważ rok 2000 jest rokiem przestępnym, zapytanie zwraca znacznik czasu 2000-03-01 14:30:00.

TimestampAdd(SQL_TSI_DAY, 3, TIMESTAMP'2000-02-27 14:30:00')

W poniższym przykładzie zapytanie dotyczy znacznika czasu uzyskanego w wyniku dodania 7 miesięcy do 1999-07-31 0:0:0. Zapytanie zwraca znacznik czasu 2000-02-29 00:00:00. Proszę zwrócić uwagę na zmniejszenie wartości składnika "dzień" do 29, wynikające z tego, że luty jest miesiącem krótszym.

TimestampAdd(SQL_TSI_MONTH, 7, TIMESTAMP'1999-07-31 00:00:00')

W poniższym przykładzie zapytanie dotyczy znacznika czasu uzyskanego w wyniku dodania 25 minut do 2000-07-31 23:35:00. Zapytanie zwraca znacznik czasu 2000-08-01 00:00:00. Proszę zwrócić uwagę na przekazanie wartości nadmiarowej do składnika "miesiąc".

TimestampAdd(SQL_TSI_MINUTE, 25, TIMESTAMP'2000-07-31 23:35:00')

TimeStampDiff

Funkcja TimestampDiff zwraca liczbę przedziałów czasu między dwoma znacznikami czasu.

Składnia:

TimestampAdd (przedział_czasu, wyrażenie_znacznika_czasu_1, wyrażenie_znacznika_czasu_2)

gdzie:

przedział_czasu

Określony przedział czasu. Dozwolone wartości to:

SQL_TSI_SECOND

SQL_TSI_MINUTE

SQL_TSI_HOUR

SQL_TSI_DAY

SQL_TSI_WEEK

SQL_TSI_MONTH

SQL_TSI_QUARTER

SQL_TSI_YEAR

timestamp_expression1

Znacznik czasu odejmowany od drugiego znacznika czasu.

timestamp_expression2

Drugi znacznik czasu, od którego jest odejmowany pierwszy znacznik czasu (wyrażenie_znacznika_czasu_1) w celu ustalenia różnicy.

Jeśli do funkcji zostanie przekazany argument wyrażenie_znacznika_czasu o wartości Null, to funkcja zwróci wartość Null.

Funkcja ta najpierw ustala składnik znacznika czasu odpowiadający podanemu parametrowi przedział_czasu. Na przykład SQL_TSI_DAY odpowiada składnikowi "dzień", a SQL_TSI_MONTH — składnikowi "miesiąc".

Następnie — w celu obliczenia łącznej liczby przedziałów czasu — funkcja zajmuje się składnikami wyższego rzędu z obu znaczników czasu. Na przykład, jeśli podany przedział czasu odpowiada składnikowi "miesiąc", to funkcja oblicza łączną liczbę miesięcy dla każdego ze znaczników czasu, dodając składnik "miesiąc" i pomnożony przez dwanaście składnik "rok".

Na koniec funkcja odejmuje od łącznej liczby przedziałów czasu drugiego znacznika łączną liczbę przedziałów czasu pierwszego znacznika.

Podczas obliczania różnicy w dniach funkcja usuwa wartości godzinowe z obu wyrażeń znacznika czasu, a następnie odejmuje wartości dni.

Obliczając różnicę w tygodniach, funkcja oblicza różnicę w dniach i przed zaokrągleniem dzieli uzyskany wynik przez siedem.

Obliczając różnicę w kwartałach, funkcja oblicza różnicę w miesiącach i przed zaokrągleniem dzieli uzyskany wynik przez trzy.

Obliczając różnicę w latach, funkcja oblicza różnicę w miesiącach i przed zaokrągleniem dzieli uzyskany wynik przez dwanaście.

Przykład użycia funkcji TimestampDiff i uzyskany wynik

W poniższym przykładzie zapytanie dotyczy różnicy w dniach między znacznikami czasu 1998-07-31 23:35:00 i 2000-04-01 14:24:00. Zwraca wartość 610. Proszę zwrócić uwagę, że przestępny rok 2000 daje jeden dodatkowy dzień.

TimestampDIFF(SQL_TSI_DAY, TIMESTAMP'1998-07-31 23:35:00', TIMESTAMP'2000-04-01 14:24:00')

Week_Of_Quarter

Zwraca liczbę (od 1 do 13) odpowiadającą tygodniowi kwartału podanej daty.

Składnia:

WEEK_OF_QUARTER (wyrażenie_daty)

gdzie:

wyrażenie_daty

Dowolne wyrażenie, którego wynikiem jest data.

Week_Of_Year

Zwraca liczbę (od 1 do 53) odpowiadającą tygodniowi roku podanej daty.

Składnia:

WEEK_OF_YEAR (wyrażenie_daty)

gdzie:

wyrażenie_daty

Dowolne wyrażenie, którego wynikiem jest data.

Rok

Zwraca rok podanej daty.

Składnia:

YEAR (wyrażenie_daty)

gdzie:

wyrażenie_daty

Dowolne wyrażenie, którego wynikiem jest data.

Przykład:

YEAR (CURRENT_DATE)


Opublikowano: Wrzesień 2017 Copyright © 2005, 2017, Oracle. Wszelkie prawa zastrzeżone. Legal Notices.