BigQuery ondersteunt de volgende DATETIME
functies.
Alle outputs worden automatisch geformatteerd volgens ISO 8601, waarbij datum en tijd worden gescheiden door eenT
.
CURRENT_DATETIME
CURRENT_DATETIME()
Description
Retourneert de huidige tijd als een DATETIME
object.
Deze functie ondersteunt een optionele timezone
parameter.Zie Timezone-definities voor informatie over het opgeven van een tijdzone.
Return Data Type
DATETIME
Example
SELECT CURRENT_DATETIME() as now;+----------------------------+| now |+----------------------------+| 2016-05-19T10:38:47.046465 |+----------------------------+
DATETIME
Description
- Constructs a
DATETIME
object using INT64 valuesrepresenting the year, month, day, hour, minute, and second. - Construeert een
DATETIME
-object met behulp van een DATUM-object en een optioneel TIJD-object. - Construeert een
DATETIME
-object met behulp van een TIMESTAMP-object. Het ondersteunt een optionele parameter om een tijdzone op te geven. Als geen tijdzone wordt opgegeven, wordt de standaardtijdzone UTC gebruikt.
Return Data Type
DATETIME
Example
EXTRACT
EXTRACT(part FROM datetime_expression)
Description
Returns een waarde die overeenkomt met de gespecificeerde part
van een geleverde datetime_expression
.
Toegestane part
-waarden zijn:
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
DAYOFWEEK
DAY
DAYOFYEAR
-
WEEK
: Geeft als resultaat het weeknummer van de datum in het bereik . Weken beginnen met zondag, en datums voorafgaand aan de eerste zondag van het jaar zijn in week 0. -
WEEK(<WEEKDAY>)
: Geeft als resultaat het weeknummer vandatetime_expression
in de reeks . Weken beginnen opWEEKDAY
.datetime
s voorafgaand aan de eersteWEEKDAY
van het jaar zijn in week 0. Geldige waarden voorWEEKDAY
zijnSUNDAY
,MONDAY
,TUESDAY
,WEDNESDAY
,THURSDAY
,FRIDAY
, enSATURDAY
. -
ISOWEEK
: Geeft als resultaat het ISO 8601 weeknummer van dedatetime_expression
.ISOWEEK
s beginnen op maandag. De teruggegeven waarden liggen in het bereik . De eersteISOWEEK
van elk ISO-jaar begint op de maandag vóór de eerste donderdag van het Gregoriaanse kalenderjaar. MONTH
QUARTER
YEAR
-
ISOYEAR
: Geeft als resultaat het ISO 8601-weeknummerjaar, dat wil zeggen het Gregoriaanse kalenderjaar dat de donderdag bevat van de week waartoedate_expression
behoort. DATE
TIME
De teruggezonden waarden vormen een afkapping van tijdperioden van een lagere orde. Bijvoorbeeld, bij het extraheren van seconden, EXTRACT
worden de milliseconde en microseconde waarden afgekapt.
Gegevens type
INT64
, behalve in de volgende gevallen:
- Indien
part
DATE
is, wordt eenDATE
object teruggezonden. - Indien
part
TIME
is, wordt eenTIME
object teruggezonden.
Voorbeelden
In het volgende voorbeeld, EXTRACT
retourneert een waarde die overeenkomt met het HOUR
tijddeel.
SELECT EXTRACT(HOUR FROM DATETIME(2008, 12, 25, 15, 30, 00)) as hour;+------------------+| hour |+------------------+| 15 |+------------------+
In het volgende voorbeeld, EXTRACT
retourneert waarden die overeenkomen met verschillende tijddelen uit een kolom van datetijden.
In het volgende voorbeeld, datetime_expression
valt op een zondag. EXTRACT
berekent de eerste kolom met weken die op zondag beginnen, en de tweede kolom met weken die op maandag beginnen.
DATETIME_ADD
DATETIME_ADD(datetime_expression, INTERVAL int64_expression part)
Beschrijving
Voegt int64_expression
eenheden van part
toe aan het object DATETIME
.
DATETIME_ADD
ondersteunt de volgende waarden voor part
:
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
DAY
-
WEEK
. Equivalent aan 7DAY
s. MONTH
QUARTER
YEAR
Er is een speciale behandeling nodig voor de delen MAAND, KWARTIER en JAAR wanneer de datum op (of bijna) de laatste dag van de maand valt. Als de resulterende maand minder dagen heeft dan de dag van de oorspronkelijke DATETIME, dan is de resulterende dag de laatste dag van de nieuwe maand.
Teruggezonden gegevenstype
DATETIME
Voorbeeld
DATETIME_SUB
DATETIME_SUB(datetime_expression, INTERVAL int64_expression part)
Beschrijving
Trekt int64_expression
eenheden van part
af van de DATETIME
.
DATETIME_SUB
ondersteunt de volgende waarden voor part
:
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
DAY
-
WEEK
. Equivalent aan 7DAY
s. MONTH
QUARTER
YEAR
Er is een speciale behandeling nodig voor MONTH
, QUARTER
, en YEAR
delen wanneer de datum op (of nabij) de laatste dag van de maand valt. Als de resulterende maand minder dagen heeft dan de dag van de oorspronkelijke DATETIME
, dan is de resulterende dag de laatste dag van de nieuwe maand.
Return Data Type
DATETIME
Example
DATETIME_DIFF
DATETIME_DIFF(datetime_expression_a, datetime_expression_b, part)
Description
Retourneert het aantal hele gespecificeerde part
intervallen tussen tweeDATETIME
objecten (datetime_expression_a
– datetime_expression_b
). Als de eerste DATETIME
eerder is dan de tweede, is de uitvoer negatief. Geeft een foutmelding als de berekening het resultaatstype overschrijdt, bijvoorbeeld als het verschil in microseconden tussen de twee DATETIME
-objecten eenINT64
-waarde zou overschrijden.
DATETIME_DIFF
ondersteunt de volgende waarden voor part
:
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
DAY
-
WEEK
: Dit datumgedeelte begint op zondag. -
WEEK(<WEEKDAY>)
: Dit datumgedeelte begint opWEEKDAY
. Geldige waarden voorWEEKDAY
zijnSUNDAY
,MONDAY
,TUESDAY
,WEDNESDAY
,THURSDAY
,FRIDAY
, enSATURDAY
. -
ISOWEEK
: Gebruikt ISO 8601 weekgrenzen. ISO-weken beginnen op maandag. MONTH
QUARTER
YEAR
-
ISOYEAR
: Gebruikt de ISO 8601-jaargrens voor de weeknummering. De ISO-jaargrens is de maandag van de eerste week waarvan de donderdag behoort tot het overeenkomstige Gregoriaanse kalenderjaar.
Return Data Type
INT64
Exemplaar
Het bovenstaande voorbeeld toont het resultaat van DATETIME_DIFF
voor twee DATETIME
s die 24 uur uit elkaar liggen. DATETIME_DIFF
met het onderdeel WEEK
geeft 1 terug omdatDATETIME_DIFF
het aantal onderdeelgrenzen telt in deze reeks vanDATETIME
s. Elke WEEK
begint op zondag, dus er is één deellijn tussen zaterdag, 2017-10-14 00:00:00
en zondag, 2017-10-15 00:00:00
.
Het volgende voorbeeld toont het resultaat van DATETIME_DIFF
voor twee datums in verschillende jaren. DATETIME_DIFF
met het datumdeel YEAR
geeft 3 omdat het het aantal Gregoriaanse kalenderjaargrenzen telt tussen de tweeDATETIME
s. DATETIME_DIFF
met het datumdeel ISOYEAR
geeft 2 omdat deze tweede DATETIME
behoort tot het ISO-jaar 2015. De eerste donderdag van het kalenderjaar 2015 was 2015-01-01, dus het ISO-jaar 2015 begint op de voorafgaandeMaandag, 2014-12-29.
Het volgende voorbeeld toont het resultaat van DATETIME_DIFF
voor twee dagen insuccessie. De eerste datum valt op een maandag en de tweede datum valt op een zondag. DATETIME_DIFF
met het datumdeel WEEK
geeft 0 omdat dit tijddeel weken gebruikt die op zondag beginnen. DATETIME_DIFF
met het datumdeelWEEK(MONDAY)
geeft 1 terug. DATETIME_DIFF
met het datumdeelISOWEEK
geeft ook 1 omdat ISO-weken op maandag beginnen.
DATETIME_TRUNC
DATETIME_TRUNC(datetime_expression, part)
Description
Kort een DATETIME
-object in tot de granulariteit van part
.
DATETIME_TRUNC
ondersteunt de volgende waarden voor part
:
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
DAY
WEEK
-
WEEK(<WEEKDAY>)
: Truncatesdatetime_expression
tot de voorafgaande weekgrens, waarbij de weken beginnen opWEEKDAY
. Geldige waarden voorWEEKDAY
zijnSUNDAY
,MONDAY
,TUESDAY
,WEDNESDAY
,THURSDAY
,FRIDAY
, enSATURDAY
. -
ISOWEEK
: Truncatesdatetime_expression
tot de voorgaandeISO 8601 weekgrens.ISOWEEK
begint op maandag. De eersteISOWEEK
van elk ISO-jaar bevat de eerste donderdag van het overeenkomstige Gregoriaanse kalenderjaar. Elkedate_expression
eerder dan deze wordt afgekapt op de voorafgaande maandag. MONTH
QUARTER
YEAR
-
ISOYEAR
: Afgekaptdatetime_expression
op de voorafgaande ISO 8601-weeknummering jaargrens. De ISO-jaargrens is de maandag van de eerste week waarvan de donderdag tot het overeenkomstige Gregoriaanse kalenderjaar behoort.
Return Data Type
DATETIME
Examples
In het volgende voorbeeld valt de oorspronkelijke DATETIME
op een zondag. Omdat depart
WEEK(MONDAY)
is, geeft DATE_TRUNC
de DATETIME
voor de eerstvolgende maandag.
In het volgende voorbeeld is de oorspronkelijke datetime_expression
in het Gregoriaanse kalenderjaar 2015. Echter, DATETIME_TRUNC
met de ISOYEAR
datum parttruncates de datetime_expression
naar het begin van het ISO-jaar, niet hetGregoriaanse kalenderjaar. De eerste donderdag van het kalenderjaar 2015 was2015-01-01, dus het ISO-jaar 2015 begint op de voorafgaande maandag, 2014-12-29.Daarom is de ISO-jaargrens die voorafgaat aan de datetime_expression
2015-06-15 00:00:00 is 2014-12-29.
FORMAT_DATETIME
FORMAT_DATETIME(format_string, datetime_expression)
Description
Vormt een DATETIME
-object volgens de gespecificeerde format_string
. Zie Ondersteunde opmaakelementen voor DATETIME voor een lijst met opmaakelementen die door deze functie worden ondersteund.
Return Data Type
STRING
Examples
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
Retourneert de laatste dag van een datetime expressie die de datum bevat.Dit wordt gewoonlijk gebruikt om de laatste dag van de maand terug te geven.
U kunt optioneel het datumgedeelte opgeven waarvoor de laatste dag wordt teruggegeven.Als deze parameter niet wordt gebruikt, is de standaardwaarde MONTH
.LAST_DAY
ondersteunt de volgende waarden voor date_part
:
YEAR
QUARTER
MONTH
-
WEEK
. Equivalent aan 7DAY
s. -
WEEK(<WEEKDAY>)
.<WEEKDAY>
staat voor de begindag van de week. Geldige waarden zijnSUNDAY
,MONDAY
,TUESDAY
,WEDNESDAY
,THURSDAY
,FRIDAY
, enSATURDAY
. -
ISOWEEK
. Gebruikt ISO 8601 week grenzen. ISO weken beginnen op maandag. -
ISOYEAR
. Gebruikt de ISO 8601 weeknummering jaar grens. De ISO jaar grens is de maandag van de eerste week waarvan de donderdag behoort tot de overeenkomstige Gregoriaanse kalender jaar.
Return Data Type
DATE
Voorbeeld
Deze geven beide de laatste dag van de maand terug:
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 |+------------+
Dit geeft de laatste dag van het jaar terug:
SELECT LAST_DAY(DATETIME '2008-11-25 15:30:00', YEAR) AS last_day+------------+| last_day |+------------+| 2008-12-31 |+------------+
Dit geeft de laatste dag van de week terug voor een week die op een zondag begint:
SELECT LAST_DAY(DATETIME '2008-11-10 15:30:00', WEEK(SUNDAY)) AS last_day+------------+| last_day |+------------+| 2008-11-15 |+------------+
Dit geeft de laatste dag van de week voor een week die op maandag begint:
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
Converteert een tekenreeksweergave van een datetime naar eenDATETIME
object.
format_string
bevat de opmaakelementen die bepalen hoe datetime_string
wordt opgemaakt. Elk element indatetime_string
moet een corresponderend element in format_string
hebben. De plaats van elk element in format_string
moet overeenkomen met de plaats van elk element in datetime_string
.
De format string ondersteunt de meeste format elementen volledig, met uitzondering van%Q
, %a
, %A
,%g
, %G
, %j
, %P
, %u
, %U
, %V
, %w
, en %W
.
PARSE_DATETIME
parseert string
volgens de volgende regels:
- Ongespecificeerde velden. Elk ongespecificeerd veld wordt geïnitialiseerd vanaf
1970-01-01 00:00:00.0
. Bijvoorbeeld, als het jaar niet gespecificeerd is, dan wordt het standaard ingesteld op1970
. - Hoofdlettergevoelige namen. Namen, zoals
Monday
enFebruary
, zijn hoofdletterongevoelig. - Witruimte. Een of meer opeenvolgende witte spaties in de format string komt overeen met nul of meer opeenvolgende witte spaties in de
DATETIME
string. Voor- en achterlopende spaties in deDATETIME
string zijn altijd toegestaan, zelfs als ze niet in de format string staan. - Formaat voorrang. Als twee of meer format elementen overlappende informatie hebben, heeft de laatste over het algemeen voorrang op de eerdere, met enkele uitzonderingen. Bijvoorbeeld, zowel
%F
als%Y
hebben invloed op het jaar, dus het eerste element heeft voorrang op het laatste. Zie de beschrijvingen van%s
,%C
, en%y
in Ondersteunde opmaak-elementen voor DATETIME.
Return Data Type
DATETIME
Examples
De volgende voorbeelden parsen een STRING
letterlijke als eenDATETIME
.
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 |+---------------------+
Het volgende voorbeeld parseert een STRING
letterlijk die een datum bevat in een natuurlijke taalindeling als eenDATETIME
.
SELECT PARSE_DATETIME('%A, %B %e, %Y','Wednesday, December 19, 2018') AS datetime;+---------------------+| datetime |+---------------------+| 2018-12-19T00:00:00 |+---------------------+
Ondersteunde opmaakelementen voor DATETIME
Niet anders vermeld, DATETIME
-functies die opmaakstrings gebruiken, ondersteunen de volgende elementen: