A BigQuery a következő DATETIME függvényeket támogatja.
Minden kimenet automatikusan az ISO 8601 szabvány szerint van formázva, a dátumot és az időt egy T-vel elválasztva.
CURRENT_DATETIME
CURRENT_DATETIME()
Description
Az aktuális időt adja vissza DATETIME objektumként.
Ez a függvény támogat egy opcionális timezone paramétert.Az időzóna megadására vonatkozó információkért lásd az Időzóna definíciókat.
Adattípus visszaadása
DATETIME
Példa
SELECT CURRENT_DATETIME() as now;+----------------------------+| now |+----------------------------+| 2016-05-19T10:38:47.046465 |+----------------------------+
DATETIME
leírás
- Konstruál egy
DATETIMEobjektumot az év, hónap, nap, óra, perc és másodperc INT64 értékeit használva. - Konstruál egy
DATETIMEobjektumot egy TIMESTAMP objektum felhasználásával. Támogatja az időzóna megadására szolgáló opcionális paramétert. Ha nincs időzóna megadva, az alapértelmezett időzónát, UTC-t használja.
Konstruál egy DATETIME objektumot egy DATE objektum és egy opcionális TIME objektum felhasználásával.
Return Data Type
DATETIME
Példa
EXTRACT
EXTRACT(part FROM datetime_expression)
Description
A megadott part értéknek megfelelő értéket ad vissza a megadott datetime_expression-ból.
A megengedett part értékek:
MICROSECONDMILLISECONDSECONDMINUTEHOURDAYOFWEEKDAYDAYOFYEAR-
WEEK: Visszaadja a dátum hetének számát a tartományban . A hetek vasárnap kezdődnek, és az év első vasárnapját megelőző dátumok a 0. héten vannak. -
WEEK(<WEEKDAY>): Visszaadja adatetime_expressionhét számát a tartományban . A hetekWEEKDAY-kor kezdődnek.Az év elsőWEEKDAYnapját megelőződatetimenapok a 0. héten vannak. AWEEKDAYérvényes értékei:SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAYésSATURDAY. -
ISOWEEK: Visszaadja adatetime_expressionISO 8601 heti számát. AISOWEEK-ek hétfőn kezdődnek. A visszatérési értékek a . Az egyes ISO-évek elsőISOWEEK-je a gregorián naptári év első csütörtökjét megelőző hétfőn kezdődik. MONTHQUARTERYEAR-
ISOYEAR: Visszaadja az ISO 8601 hétszámozású évet, amely az a Gergely-naptári év, amely tartalmazza annak a hétnek a csütörtökét, amelyhezdate_expressiontartozik. DATETIME
A visszakapott értékek az alacsonyabb rendű időszakokat csonkítják. Például a másodpercek kivonásakor a EXTRACT a milliszekundum és a mikroszekundum értékeket csonkítja.
Az adattípus visszaadása
INT64, kivéve a következő eseteket:
- Ha
partDATE, egyDATEobjektumot ad vissza. - Ha
partTIME, egyTIMEobjektumot ad vissza.
Példák
A következő példában a EXTRACT a HOURidő résznek megfelelő értéket adja vissza.
SELECT EXTRACT(HOUR FROM DATETIME(2008, 12, 25, 15, 30, 00)) as hour;+------------------+| hour |+------------------+| 15 |+------------------+
A következő példában a EXTRACT különböző időrészeknek megfelelő értékeket ad vissza egy dátumoszlopból.
A következő példában datetime_expression vasárnapra esik. A EXTRACTaz első oszlopot a vasárnap kezdődő hetekkel számítja ki, a második oszlopot pedig a hétfőn kezdődő hetekkel.
DATETIME_ADD
DATETIME_ADD(datetime_expression, INTERVAL int64_expression part)
Description
Adds int64_expression units of part to the DATETIME object.
DATETIME_ADD a part következő értékeit támogatja:
MICROSECONDMILLISECONDSECONDMINUTEHOURDAY-
WEEK. 7DAYs-nak felel meg. MONTHQUARTERYEAR
A hónap, negyedév és év részek speciális kezelése szükséges, ha a dátum a hónap utolsó napján (vagy annak közelében) van. Ha a kapott hónapnak kevesebb napja van, mint az eredeti DATETIME napjának, akkor a kapott nap az új hónap utolsó napja.
Return Data Type
DATETIME
Példa
DATETIME_SUB
DATETIME_SUB(datetime_expression, INTERVAL int64_expression part)
Description
Subtracts int64_expression units of part from the DATETIME.
DATETIME_SUB a part következő értékeit támogatja:
MICROSECONDMILLISECONDSECONDMINUTEHOURDAY-
WEEK. 7DAYs-nak felel meg. MONTHQUARTERYEAR
A MONTH, QUARTER és YEAR részek különleges kezelése szükséges, ha a dátum a hónap utolsó napján (vagy annak közelében) van. Ha a kapott hónapnak kevesebb napja van, mint az eredeti DATETIME napjának, akkor a kapott nap az új hónap utolsó napja.
Return Data Type
DATETIME
Példa
DATETIME_DIFF
DATETIME_DIFF(datetime_expression_a, datetime_expression_b, part)
Description
A kétDATETIME objektum közötti egész megadott part intervallumok számát adja vissza (datetime_expression_a – datetime_expression_b).Ha az első DATETIME korábbi, mint a második,a kimenet negatív. Hibát dob, ha a számítás túlcsordul az eredménytípuson, például ha a két DATETIME objektum közötti mikroszekundumban kifejezett különbség túlcsordulna egy INT64 értéken.
DATETIME_DIFF a következő part értékeket támogatja:
MICROSECONDMILLISECONDSECONDMINUTEHOURDAY-
WEEK: Ez a dátumrész vasárnap kezdődik. -
WEEK(<WEEKDAY>): Ez a dátumrészWEEKDAY-án kezdődik. AWEEKDAYérvényes értékei:SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAYésSATURDAY. -
ISOWEEK: Az ISO 8601 heti határokat használja. Az ISO hetek hétfőn kezdődnek. MONTHQUARTERYEAR-
ISOYEAR: Az ISO 8601 szerinti hétszámozási évhatárt használja. Az ISO évhatár annak az első hétnek a hétfője, amelynek csütörtökje a megfelelő gregorián naptárévhez tartozik.
Return adattípus
INT64
Példa
A fenti példa a DATETIME_DIFF eredményét mutatja két DATETIME-hez, amelyek között 24 óra van. A DATETIME_DIFF a WEEK résznél 1-et ad vissza, mert a DATETIME_DIFF a DATETIMEs ezen tartományában lévő részhatárok számát számolja. Minden WEEK vasárnap kezdődik, tehát egy részhatár van aszombat, 2017-10-14 00:00:00 és vasárnap, 2017-10-15 00:00:00 között.
A következő példa a DATETIME_DIFF eredményét mutatja két különböző évszámú dátumra. A DATETIME_DIFF a YEAR dátumrészlettel 3-at ad vissza, mert a két DATETIME közötti gregorián naptári évhatárok számát számolja. A DATETIME_DIFF a ISOYEAR dátumrészlettel 2-t ad vissza, mert a második DATETIME a 2015-ös ISO-évhez tartozik. A 2015-ös naptári év első csütörtökje 2015-01-01 volt, így a 2015-ös ISO-év az azt megelőző hétfőn, 2014-12-29-én kezdődik.
A következő példa a DATETIME_DIFF eredményét mutatja két egymást követő napra. Az első dátum hétfőre, a második dátum pedig vasárnapra esik. A DATETIME_DIFF a WEEK dátumrészlettel 0-t ad vissza, mivel ez az időrészlet vasárnap kezdődő heteket használ. A DATETIME_DIFF a WEEK(MONDAY) dátum résszel 1-et ad vissza. A DATETIME_DIFF a dátum résszelISOWEEK szintén 1-et ad vissza, mert az ISO hetek hétfőn kezdődnek.
DATETIME_TRUNC
DATETIME_TRUNC(datetime_expression, part)
Description
A DATETIME objektumot part granularitásra rövidíti.
DATETIME_TRUNC a következő part értékeket támogatja:
MICROSECONDMILLISECONDSECONDMINUTEHOURDAYWEEK-
WEEK(<WEEKDAY>): Adatetime_expression-t az előző heti határra vágja le, ahol a hetekWEEKDAY-nál kezdődnek. AWEEKDAYérvényes értékei:SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAYésSATURDAY. -
ISOWEEK: Azdatetime_expressionértéket az előzőISO 8601 heti határra vágja le.ISOWEEKhétfőn kezdődik. Minden ISO-év elsőISOWEEK-je a megfelelő Gergely-naptári év első csütörtökét tartalmazza. Minden ennél korábbidate_expressionaz előző hétfőre csonkolódik. MONTHQUARTERYEAR-
ISOYEAR: Adatetime_expressionaz előző ISO 8601 hét számozású évhatárra csonkolódik. Az ISO évhatár annak az első hétnek a hétfője, amelynek csütörtökje a megfelelő Gergely-naptárévhez tartozik.
Return Data Type
DATETIME
Példák
A következő példában az eredeti DATETIME vasárnapra esik. Mivel apart WEEK(MONDAY), a DATE_TRUNC visszaadja a DATETIME-et az azt megelőző hétfőre.
A következő példában az eredeti datetime_expression a 2015-ös gregorián naptári évre esik. Azonban a DATETIME_TRUNC a ISOYEAR dátummal a datetime_expression-et az ISO év elejére vágja le, nem pedig a gregorián naptári évre. A 2015-ös naptári év első csütörtökje2015-01-01 volt, így a 2015-ös ISO-év az azt megelőző hétfőn, 2014-12-29-én kezdődik.Ezért a datetime_expression2015-06-15 00:00:00:00 előtti ISO-évhatár 2014-12-29.
FORMAT_DATETIME
FORMAT_DATETIME(format_string, datetime_expression)
Description
A DATETIME objektumot a megadott format_string szerint formázza. Az e függvény által támogatott formátumelemek listáját lásd: Támogatott formátumelemek a DATETIME számára.
Return adattípus
STRING
Példák
SELECT FORMAT_DATETIME("%c", DATETIME "2008-12-25 15:30:00") AS formatted;+--------------------------+| formatted |+--------------------------+| Thu Dec 25 15:30:00 2008 |+--------------------------+
SELECT FORMAT_DATETIME("%b-%d-%Y", DATETIME "2008-12-25 15:30:00") AS formatted;+-------------+| formatted |+-------------+| Dec-25-2008 |+-------------+
SELECT FORMAT_DATETIME("%b %Y", DATETIME "2008-12-25 15:30:00") AS formatted;+-------------+| formatted |+-------------+| Dec 2008 |+-------------+
LAST_DAY
LAST_DAY(datetime_expression)
Description
A dátumot tartalmazó datetime kifejezésből az utolsó napot adja vissza.Ezt általában a hónap utolsó napjának visszaadására használják.
Előlegesen megadhatja azt a dátumrészt, amelyre vonatkozóan az utolsó napot adja vissza.Ha ezt a paramétert nem használja, az alapértelmezett érték MONTH.LAST_DAY a date_part következő értékeit támogatja:
YEARQUARTERMONTH-
WEEK. Megfelel 7DAYs-nak. -
WEEK(<WEEKDAY>).<WEEKDAY>a hét kezdő napját jelöli.Érvényes értékek:SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAYésSATURDAY. -
ISOWEEK. Az ISO 8601 szerinti héthatárokat használja. Az ISO hetek hétfőn kezdődnek. -
ISOYEAR. Az ISO 8601 heti számozású évhatárt használja.Az ISO évhatár annak az első hétnek a hétfője, amelynek csütörtökje a megfelelő Gergely-naptári évhez tartozik.
Return Data Type
DATE
Példa
Ez mindkettő a hónap utolsó napját adja vissza:
SELECT LAST_DAY(DATETIME '2008-11-25', MONTH) AS last_day+------------+| last_day |+------------+| 2008-11-30 |+------------+
SELECT LAST_DAY(DATETIME '2008-11-25') AS last_day+------------+| last_day |+------------+| 2008-11-30 |+------------+
Ez az év utolsó napját adja vissza:
SELECT LAST_DAY(DATETIME '2008-11-25 15:30:00', YEAR) AS last_day+------------+| last_day |+------------+| 2008-12-31 |+------------+
Ez a hét utolsó napját adja vissza egy vasárnap kezdődő hétre:
SELECT LAST_DAY(DATETIME '2008-11-10 15:30:00', WEEK(SUNDAY)) AS last_day+------------+| last_day |+------------+| 2008-11-15 |+------------+
Ez a hét utolsó napját adja vissza egy hétfőn kezdődő hétre:
SELECT LAST_DAY(DATETIME '2008-11-10 15:30:00', WEEK(MONDAY)) AS last_day+------------+| last_day |+------------+| 2008-11-16 |+------------+
PARSE_DATETIME
PARSE_DATETIME(format_string, datetime_string)
Description
Konvertálja egy dátumidő string ábrázolását egyDATETIME objektummá.
format_string tartalmazza a formátumelemeket, amelyek meghatározzák a datetime_string formázását. Adatetime_string minden egyes elemének rendelkeznie kell egy megfelelő elemmel a format_string-ben. A format_string minden egyes elemének helyének meg kell egyeznie a datetime_string minden egyes elemének helyével.
A formátumsorozat teljes mértékben támogatja a legtöbb formátumelemet, kivéve a %Q, %a, %A,%g, %G, %j, %P, %u, %U, %V, %w és %W elemeket.
PARSE_DATETIME a string-t a következő szabályok szerint elemzi:
- Nem meghatározott mezők. Bármely nem specifikált mező inicializálása
1970-01-01 00:00:00.0-ről történik. Például, ha az évszám nem specifikált, akkor alapértelmezés szerint1970. - Nagy- és kisbetűkre nem érzékeny nevek. A nevek, mint például
MondayésFebruary,nem érzékenyek a nagy- és kisbetűkre. - Whitespace. Egy vagy több egymást követő fehér szóköz a formátum karakterláncban megegyezik a
DATETIMEkarakterláncban lévő nulla vagy több egymást követő fehér szóközzel. ADATETIMEkarakterláncban az élen és a végén lévő fehér szóközök mindig engedélyezettek, még akkor is, ha nem szerepelnek a formátum karakterláncban. - Formátum elsőbbség. Ha két vagy több formátumelem átfedő információval rendelkezik, az utolsó általában felülírja a korábbiakat, néhány kivételtől eltekintve. Például mind a
%F, mind a%Yaz évet érinti, így a korábbi elem felülírja a későbbit. Lásd a%s,%Cés%yleírását a Támogatott formátumelemek a DATETIME számára című fejezetben.
Return Data Type
DATETIME
Példák
A következő példák egy STRING literált DATETIME-ként elemeznek.
SELECT PARSE_DATETIME('%Y-%m-%d %H:%M:%S', '1998-10-18 13:45:55') AS datetime;+---------------------+| datetime |+---------------------+| 1998-10-18T13:45:55 |+---------------------+
SELECT PARSE_DATETIME('%m/%d/%Y %I:%M:%S %p', '8/30/2018 2:23:38 PM') AS datetime+---------------------+| datetime |+---------------------+| 2018-08-30T14:23:38 |+---------------------+
A következő példa egy természetes nyelvi formátumú dátumot tartalmazó STRING literált elemezDATETIME-ként.
SELECT PARSE_DATETIME('%A, %B %e, %Y','Wednesday, December 19, 2018') AS datetime;+---------------------+| datetime |+---------------------+| 2018-12-19T00:00:00 |+---------------------+
Támogatott formátumelemek a DATETIME számára
Eltérő megjegyzés hiányában a formátumsorokat használó DATETIME függvények a következő elemeket támogatják:
.