Dela via


Tids-, datum- och intervallfunktioner

I följande tabell visas tids- och datumfunktioner som ingår i odbc-skalärfunktionsuppsättningen. Ett program kan avgöra vilka tids- och datumfunktioner som stöds av en drivrutin genom att anropa SQLGetInfo- med en informationstyp av SQL_TIMEDATE_FUNCTIONS.

Argument som anges som timestamp_exp kan vara namnet på en kolumn, resultatet av en annan skalär funktion, eller en ODBC-time-escape, ODBC-date- escapeeller ODBC-timestamp-escape, där den underliggande datatypen kan representeras som SQL_CHAR, SQL_VARCHAR, SQL_TYPE_TIME, SQL_TYPE_DATE eller SQL_TYPE_TIMESTAMP.

Argument som anges som date_exp kan vara namnet på en kolumn, resultatet av en annan skalär funktion eller en ODBC-date- escape- eller ODBC-timestamp-escape, där den underliggande datatypen kan representeras som SQL_CHAR, SQL_VARCHAR, SQL_TYPE_DATE eller SQL_TYPE_TIMESTAMP.

Argument som anges som time_exp kan vara namnet på en kolumn, resultatet av en annan skalär funktion eller en ODBC-time-escape- eller ODBC-timestamp-escape, där den underliggande datatypen kan representeras som SQL_CHAR, SQL_VARCHAR, SQL_TYPE_TIME eller SQL_TYPE_TIMESTAMP.

De CURRENT_DATE, CURRENT_TIME och CURRENT_TIMESTAMP tidsbegränsade skalärfunktionerna har lagts till i ODBC 3.0 för att överensstämma med SQL-92.

Funktion Beskrivning
CURRENT_DATE( ) (ODBC 3.0) Returnerar aktuellt datum.
CURRENT_TIME[(tidsprecision)] (ODBC 3.0) Returnerar den aktuella lokala tiden. Argumentet tidsprecision avgör sekundprecisionen för det returnerade värdet.
CURRENT_TIMESTAMP
[(tidsstämpelprecision)] (ODBC 3.0)
Returnerar aktuellt lokalt datum och lokal tid som ett tidsstämpelvärde. Argumentet tidsstämpelprecision avgör sekundprecisionen för den returnerade tidsstämpeln.
CURDATE( ) (ODBC 1.0) Returnerar aktuellt datum.
CURTIME( ) (ODBC 1.0) Returnerar den aktuella lokala tiden.
DAYNAME(date_exp) (ODBC 2.0) Returnerar en teckensträng som innehåller dagens datakällsspecifika namn (till exempel söndag till lördag eller sön. till och med lör. för en datakälla som använder engelska eller Sonntag via Samstag för en datakälla som använder tyska) för dagdelen av date_exp.
DAYOFMONTH(date_exp) (ODBC 1.0) Returnerar dagen i månaden baserat på månadsfältet i date_exp som ett heltalsvärde i intervallet 1–31.
DAYOFWEEK(date_exp) (ODBC 1.0) Returnerar veckodagen baserat på veckofältet i date_exp som ett heltalsvärde i intervallet 1–7, där 1 representerar söndag.
DAYOFYEAR(date_exp) (ODBC 1.0) Returnerar dagen på året baserat på fältet år i date_exp som ett heltalsvärde i intervallet 1–366.
EXTRACT(extract-field FROMextract-source) (ODBC 3.0) Returnerar extraheringsfält del av . Argumentet extract-source är ett datetime- eller intervalluttryck. Argumentet extract-field kan vara något av följande nyckelord:

ÅR MÅNAD DAG TIMME MINUT SEKUND

Precisionen för det returnerade värdet är implementeringsdefinierad. Skalan är 0 om inte SECOND anges, i vilket fall skalan inte är mindre än precisionen i bråk sekunder för fält för.
HOUR(time_exp) (ODBC 1.0) Returnerar timmen baserat på timfältet i time_exp som ett heltalsvärde i intervallet 0–23.
MINUTE(time_exp) (ODBC 1.0) Returnerar minut baserat på minutfältet i time_exp som ett heltalsvärde i intervallet 0–59.
MONTH(date_exp) (ODBC 1.0) Returnerar månaden baserat på månadsfältet i date_exp som ett heltalsvärde i intervallet 1–12.
MONTHNAME(date_exp) (ODBC 2.0) Returnerar en teckensträng som innehåller månadens datakällsspecifika namn (till exempel januari till december eller jan. till och med dec. för en datakälla som använder engelska eller Januar via Dezember för en datakälla som använder tyska) för månadsdelen av date_exp.
NOW( ) (ODBC 1.0) Returnerar aktuellt datum och tid som ett tidsstämpelvärde.
QUARTER(date_exp) (ODBC 1.0) Returnerar kvartalet i date_exp som ett heltalsvärde i intervallet 1–4, där 1 representerar 1 januari till och med 31 mars.
SECOND(time_exp) (ODBC 1.0) Returnerar det andra baserat på det andra fältet i time_exp som ett heltalsvärde i intervallet 0–59.
TIMESTAMPADD(intervall, integer_exp, timestamp_exp) (ODBC 2.0) Returnerar tidsstämpeln som beräknas genom att lägga till integer_exp intervall av typen intervall till timestamp_exp. Giltiga värden för intervall är följande nyckelord:

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

där bråksekunder uttrycks i miljarddelar av en sekund. Följande SQL-instruktion returnerar till exempel namnet på varje anställd och deras ettårsjubileumsdatum:

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

Om timestamp_exp är ett tidsvärde och intervall anger dagar, veckor, månader, kvartal eller år, anges datumdelen av timestamp_exp till det aktuella datumet innan den resulterande tidsstämpeln beräknas.

Om timestamp_exp är ett datumvärde och intervall anger bråk sekunder, sekunder, minuter eller timmar anges tidsdelen av timestamp_exp till 0 innan den resulterande tidsstämpeln beräknas.

Ett program avgör vilka intervall som en datakälla stöder genom att anropa SQLGetInfo- med alternativet SQL_TIMEDATE_ADD_INTERVALS.
TIMESTAMPDIFF(intervall, timestamp_exp1, timestamp_exp2) (ODBC 2.0) Returnerar heltalsantalet intervall av typen intervall med vilket timestamp_exp2 är större än timestamp_exp1. Giltiga värden för intervall är följande nyckelord:

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

där bråksekunder uttrycks i miljarddelar av en sekund. Följande SQL-instruktion returnerar till exempel namnet på varje anställd och antalet år som de har använts:

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

Om ett tidsstämpeluttryck är ett tidsvärde och intervall anger dagar, veckor, månader, kvartal eller år, anges datumdelen av tidsstämpeln till aktuellt datum innan skillnaden mellan tidsstämplarna beräknas.

Om ett tidsstämpeluttryck är ett datumvärde och intervall anger bråk sekunder, sekunder, minuter eller timmar anges tidsdelen av tidsstämpeln till 0 innan skillnaden mellan tidsstämplarna beräknas.

Ett program avgör vilka intervall en datakälla stöder genom att anropa SQLGetInfo- med alternativet SQL_TIMEDATE_DIFF_INTERVALS.
WEEK(date_exp) (ODBC 1.0) Returnerar veckan på året baserat på veckofältet i date_exp som ett heltalsvärde i intervallet 1–53.
YEAR(date_exp) (ODBC 1.0) Returnerar året baserat på fältet year i date_exp som ett heltalsvärde. Intervallet är beroende av datakälla.