Megosztás:


Idő-, dátum- és intervallumfüggvények

Az alábbi táblázat az ODBC skaláris függvénykészletében szereplő idő- és dátumfüggvényeket sorolja fel. Az alkalmazások az illesztőprogramok által támogatott idő- és dátumfüggvényeket úgy határozhatják meg, hogy meghívják SQLGetInfo egy SQL_TIMEDATE_FUNCTIONS adattípussal.

A timestamp_exp jelölésű argumentumok lehetnek egy oszlop neve, egy másik skaláris függvény vagy egy ODBC-time-escape, ODBC-date- escapevagy ODBC-timestamp-escapeeredménye, ahol a mögöttes adattípus SQL_CHAR, SQL_VARCHAR, SQL_TYPE_TIME, SQL_TYPE_DATE vagy SQL_TYPE_TIMESTAMP lehet.

Az date_exp argumentum lehet egy oszlop neve, egy másik skaláris függvény eredménye, vagy egy ODBC-date- escape vagy ODBC-timestamp-escape, ahol a mögöttes adattípus SQL_CHAR, SQL_VARCHAR, SQL_TYPE_DATE vagy SQL_TYPE_TIMESTAMP lehet.

A time_exp argumentum lehet egy oszlop neve, egy másik skaláris függvény eredménye, vagy egy ODBC-time-escape vagy ODBC-timestamp-escape, ahol a mögöttes adattípus SQL_CHAR, SQL_VARCHAR, SQL_TYPE_TIME vagy SQL_TYPE_TIMESTAMP lehet.

A CURRENT_DATE, CURRENT_TIME és CURRENT_TIMESTAMP idődátumos skaláris függvények hozzáadva lettek az ODBC 3.0-ban az SQL-92-hez való igazodás érdekében.

Funkció Leírás
CURRENT_DATE( ) (ODBC 3.0) Az aktuális dátumot adja vissza.
CURRENT_TIME[(idő pontosságú)] (ODBC 3.0) Az aktuális helyi időpontot adja vissza. Az idő pontosságú argumentum határozza meg a visszaadott érték másodperces pontosságát.
CURRENT_TIMESTAMP
[(időbélyeg pontosságú)] (ODBC 3.0)
Az aktuális helyi dátumot és helyi időt adja vissza időbélyegként. Az időbélyeg-pontosságú argumentum határozza meg a visszaadott időbélyeg másodperces pontosságát.
CURDATE( ) (ODBC 1.0) Az aktuális dátumot adja vissza.
CURTIME( ) (ODBC 1.0) Az aktuális helyi időpontot adja vissza.
DAYNAME(date_exp) (ODBC 2.0) Egy olyan karaktersztringet ad vissza, amely a nap adatforrás-specifikus nevét tartalmazza (például vasárnaptól szombatig vagy vasárnaptól szombatig. a Sat. függvényen keresztül egy angolt használó adatforráshoz, vagy a Sonntag-on keresztül a Samstag-on keresztül egy németet használó adatforráshoz) a date_expnapjára.
DAYOFMONTH(date_exp) (ODBC 1.0) A hónap napját adja vissza a date_exp hónap mezőjének alapján 1–31 közötti egész számként.
DAYOFWEEK(date_exp) (ODBC 1.0) A hét napját adja vissza a date_exp hét mezőjének alapján egész számként az 1–7 tartományban, ahol az 1 a vasárnapot jelöli.
DAYOFYEAR(date_exp) (ODBC 1.0) Az év napját adja vissza az date_exp év mezőjének alapján, 1–366 közötti egész számként.
EXTRACT(extract-field FROMextract-source) (ODBC 3.0) A kinyert forráskinyert mező részét adja vissza. A kinyerési forrás argumentum egy datetime vagy interval kifejezés. A kinyert mező argumentum a következő kulcsszavak egyike lehet:

ÉV HÓNAP NAPJA ÓRA PERC MÁSODPERC

A visszaadott érték pontossága implementációban van definiálva. A skálázás 0, kivéve, ha a MÁSODIK meg van adva, ebben az esetben a skálázás nem kisebb, mint a kinyert forrás mező tört másodperces pontossága.
HOUR(time_exp) (ODBC 1.0) Az órát adja vissza a time_exp óra mezőjének alapján, 0–23-as tartomány egész számaként.
MINUTE(time_exp) (ODBC 1.0) A time_exp percmezője alapján adja vissza a percet egész számként a 0 és 59 közötti tartományban.
MONTH(date_exp) (ODBC 1.0) A date_exp hónap mezőjének alapján adja vissza a hónapot egész számként az 1–12 tartományon belül.
MONTHNAME(date_exp) (ODBC 2.0) Egy olyan karaktersztringet ad vissza, amely a hónap adatforrás-specifikus nevét tartalmazza (például januártól decemberig vagy januártól dec.-ig egy angolt használó adatforrás esetében, vagy januártól dezemberig egy németet használó adatforrás esetében) a date_exphónapjára.
NOW( ) (ODBC 1.0) Az aktuális dátumot és időt időbélyegként adja vissza.
QUARTER(date_exp) (ODBC 1.0) Az date_exp negyedévét adja vissza egész számként az 1–4 tartományban, ahol az 1 január 1–március 31.
SECOND(time_exp) (ODBC 1.0) A másodikat a time_exp második mezője alapján adja vissza egész számként a 0–59 tartományon belül.
TIMESTAMPADD(intervallum, integer_exp, timestamp_exp) (ODBC 2.0) Az timestamp_exp integer_exp típusú időközök hozzáadásával kiszámított időbélyeget adja vissza. Az intervallum érvényes értékei a következő kulcsszavak:

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

ahol a másodperc törtrésze másodperc milliárd másodpercben van kifejezve. A következő SQL-utasítás például az egyes alkalmazottak nevét és az egyéves évforduló dátumát adja vissza:

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

Ha timestamp_exp időérték, és intervallum napokat, heteket, hónapokat, negyedéveket vagy éveket határoz meg, a timestamp_exp dátumrésze az aktuális dátumra van állítva az eredményként kapott időbélyeg kiszámítása előtt.

Ha timestamp_exp dátumérték, és intervallum a tört másodperceket, másodperceket, perceket vagy órákat adja meg, a timestamp_exp időaránya 0-ra van állítva az eredményként kapott időbélyeg kiszámítása előtt.

Az alkalmazások az SQL_TIMEDATE_ADD_INTERVALS beállítással SQLGetInfo meghívásával határozzák meg az adatforrások által támogatott időközöket.
TIMESTAMPDIFF(intervallum, timestamp_exp1, timestamp_exp2) (ODBC 2.0) A típusú intervallumok egész számát adja vissza,, amellyel a timestamp_exp2 nagyobb, mint timestamp_exp1. Az intervallum érvényes értékei a következő kulcsszavak:

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

ahol a másodperc törtrésze másodperc milliárd másodpercben van kifejezve. Az alábbi SQL-utasítás például az egyes alkalmazottak nevét és az alkalmazotti évek számát adja vissza:

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

Ha bármelyik időbélyeg-kifejezés időérték, és intervallum napokat, heteket, hónapokat, negyedéveket vagy éveket határoz meg, az időbélyeg dátumrésze az aktuális dátumra van állítva, mielőtt kiszámítja az időbélyegek közötti különbséget.

Ha bármelyik időbélyeg-kifejezés dátumérték, és intervallum a tört másodperceket, másodperceket, perceket vagy órákat adja meg, az időbélyeg időaránya 0-ra van állítva az időbélyegek közötti különbség kiszámítása előtt.

Az alkalmazások az SQL_TIMEDATE_DIFF_INTERVALS beállítással SQLGetInfo meghívásával határozzák meg az adatforrások által támogatott időközöket.
HÉT(date_exp) (ODBC 1.0) Az év hetét adja vissza a date_exp hét mezőjének alapján, 1–53-as tartomány egész számaként.
YEAR(date_exp) (ODBC 1.0) A date_exp év mezője alapján adja vissza az évet egész számként. A tartomány adatforrás-függő.