Időzítési függvények a Standard SQL-ben

author
11 minutes, 50 seconds Read

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

  1. Konstruál egy DATETIME objektumot az év, hónap, nap, óra, perc és másodperc INT64 értékeit használva.
  2. Konstruál egy DATETIME objektumot egy DATE objektum és egy opcionális TIME objektum felhasználásával.

  3. 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.

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 a datetime_expression hét számát a tartományban . A hetek WEEKDAY-kor kezdődnek.Az év első WEEKDAY napját megelőző datetime napok a 0. héten vannak. A WEEKDAY érvényes értékei: SUNDAY, MONDAY, TUESDAY, WEDNESDAY,THURSDAY, FRIDAY és SATURDAY.
  • ISOWEEK: Visszaadja a datetime_expression ISO 8601 heti számát. A ISOWEEK-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, amelyhez date_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, egy DATE objektumot ad vissza.
  • Ha part TIME, egy TIME objektumot 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:

  • MICROSECOND
  • MILLISECOND
  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • WEEK. 7 DAYs-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. 7 DAYs-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_adatetime_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ész WEEKDAY-án kezdődik. A WEEKDAY érvényes értékei: SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY,FRIDAY és SATURDAY.
  • 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 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:

  • MICROSECOND
  • MILLISECOND
  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • WEEK
  • WEEK(<WEEKDAY>): A datetime_expression-t az előző heti határra vágja le, ahol a hetek WEEKDAY-nál kezdődnek. A WEEKDAY érvényes értékei: SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY és SATURDAY.
  • ISOWEEK: Az datetime_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ábbi date_expression az előző hétfőre csonkolódik.
  • MONTH
  • QUARTER
  • YEAR
  • ISOYEAR: A datetime_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_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:

  • YEAR
  • QUARTER
  • MONTH
  • WEEK. Megfelel 7 DAYs-nak.
  • WEEK(<WEEKDAY>). <WEEKDAY> a hét kezdő napját jelöli.Érvényes értékek: SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY,FRIDAY és SATURDAY.
  • 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 szerint 1970.
  • Nagy- és kisbetűkre nem érzékeny nevek. A nevek, mint például Monday és February,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 aDATETIME karakterláncban lévő nulla vagy több egymást követő fehér szóközzel. A DATETIME 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:

.

Similar Posts

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.