Sdílet prostřednictvím


Funkce času, data a intervalu

Následující tabulka uvádí funkce času a data, které jsou zahrnuty v sadě skalárních funkcí ODBC. Aplikace může určit, které funkce času a data jsou podporovány ovladačem voláním SQLGetInfo s typu informací SQL_TIMEDATE_FUNCTIONS.

Argumenty označené jako timestamp_exp můžou být název sloupce, výsledek jiné skalární funkce nebo odbc-time-escape, ODBC-date- escapenebo ODBC-timestamp-escape, kde může být podkladový datový typ reprezentován jako SQL_CHAR, SQL_VARCHAR, SQL_TYPE_TIME, SQL_TYPE_DATE nebo SQL_TYPE_TIMESTAMP.

Argumenty označené jako date_exp můžou být název sloupce, výsledek jiné skalární funkce nebo ODBC-date- řídicí nebo ODBC-timestamp-escape , kde může být podkladový datový typ reprezentován jako SQL_CHAR, SQL_VARCHAR, SQL_TYPE_DATE nebo SQL_TYPE_TIMESTAMP.

Argumenty označené jako time_exp můžou být název sloupce, výsledek jiné skalární funkce nebo odbc-time-escape nebo ODBC-timestamp-escape, kde může být podkladový datový typ reprezentován jako SQL_CHAR, SQL_VARCHAR, SQL_TYPE_TIME nebo SQL_TYPE_TIMESTAMP.

V rozhraní ODBC 3.0 byly přidány CURRENT_DATE, CURRENT_TIME a CURRENT_TIMESTAMP skalární funkce, které odpovídají jazyku SQL-92.

Funkce Popis
CURRENT_DATE( ) (ODBC 3.0) Vrátí aktuální datum.
CURRENT_TIME[()] (ODBC 3.0) Vrátí aktuální místní čas. Argument přesnosti času určuje přesnost sekund vrácené hodnoty.
CURRENT_TIMESTAMP
[(timestamp-precision)] (ODBC 3.0)
Vrátí aktuální místní datum a místní čas jako hodnotu časového razítka. Argument timestamp-precision určuje přesnost sekund vráceného časového razítka.
CURDATE( ) (ODBC 1.0) Vrátí aktuální datum.
CURTIME( ) (ODBC 1.0) Vrátí aktuální místní čas.
DAYNAME(date_exp) (ODBC 2.0) Vrátí řetězec znaků obsahující název dne specifický pro zdroj dat (například neděle až sobotu nebo slunce. až sat. pro zdroj dat, který používá angličtinu nebo Sonntag prostřednictvím Samstagu pro zdroj dat, který používá němčinu) pro denní část date_exp.
DAYOFMONTH(date_exp) (ODBC 1.0) Vrátí den v měsíci na základě pole měsíce v date_exp jako celočíselnou hodnotu v rozsahu od 1 do 31.
DAYOFWEEK(date_exp) (ODBC 1.0) Vrátí den v týdnu na základě pole týdne v date_exp jako celočíselnou hodnotu v rozsahu 1–7, kde 1 představuje neděli.
DAYOFYEAR(date_exp) (ODBC 1.0) Vrátí den roku na základě pole roku v date_exp jako celočíselnou hodnotu v rozsahu 1–366.
EXTRACT(extract-field FROMextract-source ) (ODBC 3.0) Vrátí část extrahování zdroje. Argument extrakce zdroje je výraz data a času nebo intervalu. Argument extrahovat pole může být jedním z následujících klíčových slov:

ROK MĚSÍC HODINA MINUTA SEKUNDA

Přesnost vrácené hodnoty je definována implementací. Měřítko je 0, pokud není zadána hodnota SECOND, v takovém případě není měřítko menší než přesnost desetinných sekund pole extrakce zdroje.
HOUR(time_exp) (ODBC 1.0) Vrátí hodinu na základě pole hodiny v time_exp jako celočíselná hodnota v rozsahu od 0 do 23.
MINUTE(time_exp) (ODBC 1.0) Vrátí minutu založenou na minutovém poli v time_exp jako celočíselnou hodnotu v rozsahu od 0 do 59.
MONTH(date_exp) (ODBC 1.0) Vrátí měsíc založený na poli měsíce v date_exp jako celočíselná hodnota v rozsahu 1–12.
MONTHNAME(date_exp) (ODBC 2.0) Vrátí řetězec znaku obsahující název konkrétního zdroje dat měsíce (například leden až prosinec nebo leden. až prosinec. pro zdroj dat, který používá angličtinu, nebo Januar přes Dezember pro zdroj dat, který používá němčinu) pro část měsíce date_exp.
NOW( ) (ODBC 1.0) Vrátí aktuální datum a čas jako hodnotu časového razítka.
QUARTER(date_exp) (ODBC 1.0) Vrátí čtvrtletí v date_exp jako celočíselnou hodnotu v rozsahu od 1 do 4, kde 1 představuje leden 1 až 31. března.
SECOND(time_exp) (ODBC 1.0) Vrátí sekundu založenou na druhém poli v time_exp jako celočíselnou hodnotu v rozsahu od 0 do 59.
TIMESTAMPADD(interval, integer_exp, timestamp_exp) (ODBC 2.0) Vrátí časové razítko vypočítané přidáním intervalů integer_exp typu interval do timestamp_exp. Platné hodnoty intervalu jsou následující klíčová slova:

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

kde desetinné sekundy jsou vyjádřeny v miliardách sekund. Například následující příkaz SQL vrátí jméno každého zaměstnance a datum výročí jednoho roku:

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

Pokud je timestamp_exp časovou hodnotou a interval určuje dny, týdny, čtvrtletí nebo roky, je část timestamp_exp data nastavená na aktuální datum před výpočtem výsledného časového razítka.

Pokud je timestamp_exp hodnota data a interval určuje desetinné sekundy, sekundy, minuty nebo hodiny, je časová část timestamp_exp před výpočtem výsledného časového razítka nastavena na 0.

Aplikace určuje, které intervaly zdroj dat podporuje voláním SQLGetInfo s možností SQL_TIMEDATE_ADD_INTERVALS.
TIMESTAMPDIFF(interval, timestamp_exp1, timestamp_exp2) (ODBC 2.0) Vrátí celočíselné číslo intervalů typu interval, o které je timestamp_exp2 větší než timestamp_exp1. Platné hodnoty intervalu jsou následující klíčová slova:

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

kde desetinné sekundy jsou vyjádřeny v miliardách sekund. Například následující příkaz SQL vrátí jméno každého zaměstnance a počet roků, které byly použity:

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

Pokud je výraz časového razítka časovou hodnotou a interval určuje dny, týdny, měsíce, čtvrtletí nebo roky, je část tohoto časového razítka nastavená na aktuální datum před výpočtem rozdílu mezi časovými razítky.

Pokud je výraz časového razítka hodnotou data a interval určuje desetinné sekundy, sekundy, minuty nebo hodiny, je časová část tohoto časového razítka před výpočtem rozdílu mezi časovými razítky nastavena na hodnotu 0.

Aplikace určuje, které intervaly zdroj dat podporuje voláním SQLGetInfo s možností SQL_TIMEDATE_DIFF_INTERVALS.
WEEK(date_exp) (ODBC 1.0) Vrátí týden roku na základě pole týdne v date_exp jako celočíselnou hodnotu v rozsahu 1–53.
YEAR(date_exp) (ODBC 1.0) Vrátí rok na základě pole roku v date_exp jako celočíselná hodnota. Oblast je závislá na zdroji dat.