Udostępnij za pośrednictwem


Funkcje godziny, daty i interwału

W poniższej tabeli wymieniono funkcje godziny i daty uwzględnione w zestawie funkcji skalarnych ODBC. Aplikacja może określić, które funkcje godziny i daty są obsługiwane przez sterownik, wywołując SQLGetInfo z typem informacji SQL_TIMEDATE_FUNCTIONS.

Argumenty oznaczone jako timestamp_exp mogą być nazwą kolumny, wynik innej funkcji skalarnej lub odBC-time-escape, odBC-date-escapelub odBC-timestamp-escape, gdzie podstawowy typ danych może być reprezentowany jako SQL_CHAR, SQL_VARCHAR, SQL_TYPE_TIME, SQL_TYPE_DATE lub SQL_TYPE_TIMESTAMP.

Argumenty oznaczone jako date_exp mogą być nazwą kolumny, wynikiem innej funkcji skalarnej lub odBC-date-escape lub odBC-timestamp-escape, gdzie podstawowy typ danych może być reprezentowany jako SQL_CHAR, SQL_VARCHAR, SQL_TYPE_DATE lub SQL_TYPE_TIMESTAMP.

Argumenty oznaczone jako time_exp mogą być nazwą kolumny, wynikiem innej funkcji skalarnej lub odBC-time-escape lub odBC-timestamp-escape, gdzie podstawowy typ danych może być reprezentowany jako SQL_CHAR, SQL_VARCHAR, SQL_TYPE_TIME lub SQL_TYPE_TIMESTAMP.

Funkcje CURRENT_DATE, CURRENT_TIME i CURRENT_TIMESTAMP wartości skalarnych zostały dodane w wersji ODBC 3.0 w celu dopasowania do języka SQL-92.

Funkcja Opis
CURRENT_DATE( ) (ODBC 3.0) Zwraca bieżącą datę.
CURRENT_TIME[( (ODBC 3.0) Zwraca bieżący czas lokalny. dokładności czasu argument określa sekundy dokładności zwracanej wartości.
CURRENT_TIMESTAMP
[(znacznika czasu )] (ODBC 3.0)
Zwraca bieżącą lokalną datę i godzinę lokalną jako wartość znacznika czasu. Argument precyzji sygnatury czasowej określa sekundy dokładności zwracanego znacznika czasu.
CURDATE( ) (ODBC 1.0) Zwraca bieżącą datę.
CURTIME( ) (ODBC 1.0) Zwraca bieżący czas lokalny.
DAYNAME(date_exp) (ODBC 2.0) Zwraca ciąg znaków zawierający specyficzną dla źródła danych nazwę dnia (na przykład niedzielę do soboty lub słońca. do sat. dla źródła danych używającego języka angielskiego lub sonntag przez Samstag dla źródła danych, które używa języka niemieckiego) w ciągu dnia date_exp.
DAYOFMONTH(date_exp) (ODBC 1.0) Zwraca dzień miesiąca na podstawie pola miesiąca w date_exp jako wartość całkowita w zakresie od 1 do 31.
DAYOFWEEK(date_exp) (ODBC 1.0) Zwraca dzień tygodnia na podstawie pola tygodnia w date_exp jako wartość całkowita w zakresie od 1 do 7, gdzie 1 reprezentuje niedzielę.
DAYOFYEAR(date_exp) (ODBC 1.0) Zwraca dzień roku na podstawie pola roku w date_exp jako wartość całkowita w zakresie od 1 do 366.
EXTRACT(extract-field FROMextract-source) (ODBC 3.0) Zwraca część wyodrębnianego pola extract-source. Argument wyodrębniania źródła jest wyrażeniem typu data/godzina lub interwał. Argument wyodrębniania pola może być jednym z następujących słów kluczowych:

SEKUNDA W CIĄGU DNIA MIESIĄCA

Precyzja zwracanej wartości jest zdefiniowana przez implementację. Skala jest równa 0, chyba że określono wartość SEKUND, w tym przypadku skala nie jest mniejsza niż precyzja ułamkowa sekund pola wyodrębniania źródła.
HOUR(time_exp) (ODBC 1.0) Zwraca godzinę na podstawie pola godziny w time_exp jako wartość całkowita w zakresie od 0 do 23.
MINUTE(time_exp) (ODBC 1.0) Zwraca minutę na podstawie pola minuty w time_exp jako wartość całkowita w zakresie od 0 do 59.
MONTH(date_exp) (ODBC 1.0) Zwraca miesiąc na podstawie pola miesiąc w date_exp jako wartość całkowita w zakresie od 1 do 12.
MONTHNAME(date_exp) (ODBC 2.0) Zwraca ciąg znaków zawierający nazwę specyficzną dla źródła danych miesiąca (na przykład od stycznia do grudnia lub stycznia do grudnia. dla źródła danych używającego języka angielskiego lub Januar przez Dezember dla źródła danych, które używa języka niemieckiego) w miesiącu date_exp.
NOW( ) (ODBC 1.0) Zwraca bieżącą datę i godzinę jako wartość znacznika czasu.
QUARTER(date_exp) (ODBC 1.0) Zwraca kwartał w date_exp jako wartość całkowitą w zakresie od 1 do 4, gdzie wartość 1 stycznia do 31 marca.
SECOND(time_exp) (ODBC 1.0) Zwraca sekundę opartą na drugim polu w time_exp jako wartość całkowitą w zakresie od 0 do 59.
TIMESTAMPADD( interwał, integer_exp, timestamp_exp) (ODBC 2.0) Zwraca znacznik czasu obliczony przez dodanie interwałów integer_exp typu w celu timestamp_exp. Prawidłowe wartości interwału są następującymi słowami kluczowymi:

SQL_TSI_FRAC_SECOND

SQL_TSI_SECOND

SQL_TSI_MINUTE

SQL_TSI_HOUR

SQL_TSI_DAY

SQL_TSI_WEEK

SQL_TSI_MONTH

SQL_TSI_QUARTER

SQL_TSI_YEAR

gdzie sekundy ułamkowe są wyrażone w miliardach sekund sekundy. Na przykład następująca instrukcja SQL zwraca nazwę każdego pracownika i datę rocznicy jednego roku:

SELECT NAME, {fn TIMESTAMPADD(SQL_TSI_YEAR, 1, HIRE_DATE)} FROM EMPLOYEES

Jeśli timestamp_exp jest wartością godziny i interwał określa dni, tygodnie, miesiące, kwartały lub lata, część daty timestamp_exp jest ustawiona na bieżącą datę przed obliczeniem wynikowego znacznika czasu.

Jeśli timestamp_exp jest wartością daty i interwał określa ułamkowe sekundy, sekundy, minuty lub godziny, część czasu timestamp_exp jest ustawiona na 0 przed obliczeniem wynikowego znacznika czasu.

Aplikacja określa interwały obsługiwane przez źródło danych przez wywołanie SQLGetInfo z opcją SQL_TIMEDATE_ADD_INTERVALS.
TIMESTAMPDIFF( interwał, timestamp_exp1, timestamp_exp2) (ODBC 2.0) Zwraca liczbę całkowitą interwałów typu interwału, według których timestamp_exp2 jest większa niż timestamp_exp1. Prawidłowe wartości interwału są następującymi słowami kluczowymi:

SQL_TSI_FRAC_SECOND

SQL_TSI_SECOND

SQL_TSI_MINUTE

SQL_TSI_HOUR

SQL_TSI_DAY

SQL_TSI_WEEK

SQL_TSI_MONTH

SQL_TSI_QUARTER

SQL_TSI_YEAR

gdzie sekundy ułamkowe są wyrażone w miliardach sekund sekundy. Na przykład następująca instrukcja SQL zwraca nazwę każdego pracownika i liczbę lat, przez które zostały zatrudnione:

SELECT NAME, {fn TIMESTAMPDIFF(SQL_TSI_YEAR, {fn CURDATE()}, HIRE_DATE)} FROM EMPLOYEES

Jeśli wyrażenie znacznika czasu jest wartością godziny i interwał określa dni, tygodnie, miesiące, kwartały lub lata, część daty tego znacznika czasu jest ustawiona na bieżącą datę przed obliczeniem różnicy między znacznikami czasu.

Jeśli wyrażenie znacznika czasu jest wartością daty i interwał określa ułamkowe sekundy, sekundy, minuty lub godziny, część czasu tego znacznika czasu jest ustawiona na 0 przed obliczeniem różnicy między znacznikami czasu.

Aplikacja określa interwały obsługiwane przez źródło danych przez wywołanie SQLGetInfo z opcją SQL_TIMEDATE_DIFF_INTERVALS.
WEEK(date_exp) (ODBC 1.0) Zwraca tydzień roku na podstawie pola tydzień w date_exp jako wartość całkowita w zakresie od 1 do 53.
YEAR(date_exp) (ODBC 1.0) Zwraca rok w oparciu o pole roku w date_exp jako wartość całkowitą. Zakres jest zależny od źródła danych.