![]() |
|
Funkcje kalendarzowe data/godzinaFunkcje 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_DateZwraca bieżącą datę. Data jest określana przez komputer. Wartość nie zawiera składnika godzin. Składnia: CURRENT_DATE Current_TimeZwraca 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:
Current_TimeStampZwraca 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:
Day_Of_QuarterZwraca 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:
DayNameZwraca nazwę (po angielsku) dnia tygodnia podanej daty. Składnia: DAYNAME (wyrażenie_daty) gdzie:
DayOfMonthZwraca liczbę odpowiadającą dniowi miesiąca podanej daty. Składnia: DAYOFMONTH (wyrażenie_daty) gdzie:
DayOfWeekZwraca 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:
DayOfYearZwraca liczbę (od 1 do 366) odpowiadającą dniowi roku podanej daty. Składnia: DAYOFYEAR (wyrażenie_daty) gdzie:
HourZwraca 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:
MinuteZwraca liczbę (od 0 do 59) odpowiadającą minucie podanej godziny. Składnia: MINUTE (wyrażenie_godziny) gdzie:
MonthZwraca liczbę (od 1 do 12) odpowiadającą miesiącowi podanej daty. Składnia: MONTH (wyrażenie_daty) gdzie:
Month_Of_QuarterZwraca liczbę (od 1 do 3) odpowiadającą miesiącowi kwartału podanej daty. Składnia: MONTH_OF_QUARTER (wyrażenie_daty) gdzie:
MonthNameZwraca nazwę (po angielsku) miesiąca podanej daty. Składnia: MONTHNAME (wyrażenie_daty) gdzie:
NowZwraca 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_YearZwraca liczbę (od 1 do 4) odpowiadającą kwartałowi roku podanej daty. Składnia: QUARTER_OF_YEAR (wyrażenie_daty) gdzie:
SecondZwraca liczbę (od 0 do 59) odpowiadającą sekundzie podanej godziny. Składnia: SECOND (wyrażenie_godziny) gdzie:
TimestampAddFunkcja 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:
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') TimeStampDiffFunkcja 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:
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 wynikW 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_QuarterZwraca liczbę (od 1 do 13) odpowiadającą tygodniowi kwartału podanej daty. Składnia: WEEK_OF_QUARTER (wyrażenie_daty) gdzie:
Week_Of_YearZwraca liczbę (od 1 do 53) odpowiadającą tygodniowi roku podanej daty. Składnia: WEEK_OF_YEAR (wyrażenie_daty) gdzie:
RokZwraca rok podanej daty. Składnia: YEAR (wyrażenie_daty) gdzie:
Przykład: YEAR (CURRENT_DATE) |
Opublikowano: Wrzesień 2017 | Copyright © 2005, 2017, Oracle. Wszelkie prawa zastrzeżone. Legal Notices. |