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
DATETIME
objektumot az év, hónap, nap, óra, perc és másodperc INT64 értékeit használva. - Konstruál egy
DATETIME
objektumot 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:
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
DAYOFWEEK
DAY
DAYOFYEAR
-
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_expression
hét számát a tartományban . A hetekWEEKDAY
-kor kezdődnek.Az év elsőWEEKDAY
napját megelőződatetime
napok a 0. héten vannak. AWEEKDAY
érvényes értékei:SUNDAY
,MONDAY
,TUESDAY
,WEDNESDAY
,THURSDAY
,FRIDAY
ésSATURDAY
. -
ISOWEEK
: Visszaadja adatetime_expression
ISO 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. MONTH
QUARTER
YEAR
-
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_expression
tartozik. DATE
TIME
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
part
DATE
, egyDATE
objektumot ad vissza. - Ha
part
TIME
, egyTIME
objektumot ad vissza.
Példák
A következő példában a EXTRACT
a HOUR
idő 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 EXTRACT
az 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:
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
DAY
-
WEEK
. 7DAY
s-nak felel meg. MONTH
QUARTER
YEAR
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:
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
DAY
-
WEEK
. 7DAY
s-nak felel meg. MONTH
QUARTER
YEAR
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:
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
DAY
-
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. MONTH
QUARTER
YEAR
-
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 DATETIME
s 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:
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
DAY
WEEK
-
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.ISOWEEK
hé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_expression
az előző hétfőre csonkolódik. MONTH
QUARTER
YEAR
-
ISOYEAR
: Adatetime_expression
az 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_expression
2015-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:
YEAR
QUARTER
MONTH
-
WEEK
. Megfelel 7DAY
s-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
DATETIME
karakterláncban lévő nulla vagy több egymást követő fehér szóközzel. ADATETIME
karakterlá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%Y
az évet érinti, így a korábbi elem felülírja a későbbit. Lásd a%s
,%C
és%y
leí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:
.