BigQuery prend en charge les fonctions DATETIME
suivantes.
Toutes les sorties sont automatiquement formatées selon la norme ISO 8601,en séparant la date et l’heure par unT
.
CURRENT_DATETIME
CURRENT_DATETIME()
Description
Retourne l’heure actuelle sous forme d’un objet DATETIME
.
Cette fonction supporte un paramètre timezone
facultatif.Voir les définitions de fuseau horaire pour desinformations sur la façon de spécifier un fuseau horaire.
Retourne le type de données
DATETIME
Exemple
SELECT CURRENT_DATETIME() as now;+----------------------------+| now |+----------------------------+| 2016-05-19T10:38:47.046465 |+----------------------------+
DATETIME
Description
- Construit un objet
DATETIME
en utilisant des valeurs INT64représentant l’année, le mois, le jour, l’heure, la minute et la seconde. - Construit un objet
DATETIME
en utilisant un objet DATE et un objet TIME facultatif. - Construit un objet
DATETIME
en utilisant un objet TIMESTAMP. Il supporte un paramètre optionnel pour spécifier un fuseau horaire. Si aucun fuseau horaire n’est spécifié, le fuseau horaire par défaut, UTC, est utilisé.
Retourne le type de données
DATETIME
Exemple
EXTRACT
EXTRACT(part FROM datetime_expression)
Description
Retourne une valeur qui correspond au part
spécifié à partir d’un datetime_expression
fourni.
Les valeurs part
autorisées sont :
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
DAYOFWEEK
DAY
DAYOFYEAR
-
WEEK
: Renvoie le numéro de semaine de la date dans la plage . Les semaines commencent par le dimanche, et les dates antérieures au premier dimanche de l’année sont en semaine 0. -
WEEK(<WEEKDAY>)
: Renvoie le numéro de semaine dedatetime_expression
dans l’intervalle . Les semaines commencent leWEEKDAY
.datetime
s antérieures au premierWEEKDAY
de l’année sont dans la semaine 0. Les valeurs valides pourWEEKDAY
sontSUNDAY
,MONDAY
,TUESDAY
,WEDNESDAY
,THURSDAY
,FRIDAY
, etSATURDAY
. -
ISOWEEK
: Renvoie le numéro de semaine ISO 8601 de ladatetime_expression
. LesISOWEEK
commencent le lundi. Les valeurs retournées sont comprises dans l’intervalle . Le premierISOWEEK
de chaque année ISO commence le lundi avant le premier jeudi de l’année civile grégorienne. MONTH
QUARTER
YEAR
-
ISOYEAR
: Renvoie l’année ISO 8601 de numérotation des semaines, qui est l’année du calendrier grégorien contenant leJeudi de la semaine à laquelledate_expression
appartient. DATE
TIME
Les valeurs renvoyées tronquent les périodes de temps d’ordre inférieur. Par exemple, lors de l’extraction des secondes, EXTRACT
tronque les valeurs millisecondes et microsecondes.
Retourner le type de données
INT64
, sauf dans les cas suivants :
- Si
part
estDATE
, renvoie un objetDATE
. - Si
part
estTIME
, renvoie un objetTIME
.
Exemples
Dans l’exemple suivant, EXTRACT
renvoie une valeur correspondant à la partie temps HOUR
.
SELECT EXTRACT(HOUR FROM DATETIME(2008, 12, 25, 15, 30, 00)) as hour;+------------------+| hour |+------------------+| 15 |+------------------+
Dans l’exemple suivant, EXTRACT
renvoie des valeurs correspondant à différentes parties temps d’une colonne de dates.
Dans l’exemple suivant, datetime_expression
tombe un dimanche. EXTRACT
calcule la première colonne en utilisant les semaines qui commencent le dimanche, et il calculela deuxième colonne en utilisant les semaines qui commencent le lundi.
DATETIME_ADD
DATETIME_ADD(datetime_expression, INTERVAL int64_expression part)
Description
Ajoute int64_expression
unités de part
à l’objet DATETIME
.
DATETIME_ADD
supporte les valeurs suivantes pour part
:
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
DAY
-
WEEK
. Equivalent à 7DAY
s. MONTH
QUARTER
YEAR
Une manipulation spéciale est requise pour les parties MONTH, QUARTER et YEAR lorsque la date est au (ou proche du) dernier jour du mois. Si le mois résultant a moins de jours que le jour de la DATETIME d’origine, alors le jour résultant est le dernier jour du nouveau mois.
Type de données de retour
DATETIME
Exemple
DATETIME_SUB
DATETIME_SUB(datetime_expression, INTERVAL int64_expression part)
Description
Soustrait int64_expression
unités de part
de la DATETIME
.
DATETIME_SUB
supporte les valeurs suivantes pour part
:
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
DAY
-
WEEK
. Equivalent à 7DAY
s. MONTH
QUARTER
YEAR
Une manipulation spéciale est requise pour les parties MONTH
, QUARTER
, et YEAR
lorsque la date est au (ou proche du) dernier jour du mois. Si le mois résultant a moins de jours que le jour de l’original DATETIME
, alors le jour résultant est le dernier jour du nouveau mois.
Type de données retournées
DATETIME
Exemple
DATETIME_DIFF
DATETIME_DIFF(datetime_expression_a, datetime_expression_b, part)
Description
Retourne le nombre d’intervalles entiers spécifiés part
entre deuxDATETIME
objets (datetime_expression_a
– datetime_expression_b
).Si le premier DATETIME
est antérieur au second, la sortie est négative. Lance une erreur si le calcul déborde le type de résultat, par exemple si la différence en microsecondes entre les deux objets DATETIME
déborde une valeurINT64
.
DATETIME_DIFF
supporte les valeurs suivantes pour part
:
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
DAY
-
WEEK
: Cette partie de la date commence le dimanche. -
WEEK(<WEEKDAY>)
: Cette partie de la date commence leWEEKDAY
. Les valeurs valides pourWEEKDAY
sontSUNDAY
,MONDAY
,TUESDAY
,WEDNESDAY
,THURSDAY
,FRIDAY
, etSATURDAY
. -
ISOWEEK
: Utilise les frontières de la semaine ISO 8601. Les semaines ISO commencent le lundi. MONTH
QUARTER
YEAR
-
ISOYEAR
: Utilise la limite d’année de la numérotation hebdomadaire ISO 8601. La limite de l’année ISO est le lundi de la première semaine dont le jeudi appartient à l’année calendaire grégorienne correspondante.
Retourner le type de données
INT64
Exemple
L’exemple ci-dessus montre le résultat de DATETIME_DIFF
pour deux DATETIME
qui sont séparés de 24 heures. DATETIME_DIFF
avec la pièce WEEK
renvoie 1 carDATETIME_DIFF
compte le nombre de limites de pièces dans cette plage deDATETIME
s. Chaque WEEK
commence le dimanche, il y a donc une limite de partie entre le samedi, 2017-10-14 00:00:00
et le dimanche, 2017-10-15 00:00:00
.
L’exemple suivant montre le résultat de DATETIME_DIFF
pour deux dates d’années indifférentes. DATETIME_DIFF
avec la partie date YEAR
renvoie 3 car ilcompte le nombre de bornes de l’année civile grégorienne entre les deuxDATETIME
. DATETIME_DIFF
avec la partie date ISOYEAR
renvoie 2 car ce deuxième DATETIME
appartient à l’année ISO 2015. Le premier jeudi de l’année civile 2015 était le 01-01-2015, donc l’année ISO 2015 commence le lundi précédent, le 29-12-2014.
L’exemple suivant montre le résultat de DATETIME_DIFF
pour deux jours d’insuccession. La première date tombe un lundi et la deuxième date tombe un dimanche. DATETIME_DIFF
avec la partie date WEEK
renvoie 0 car cette partie temps utilise des semaines qui commencent le dimanche. DATETIME_DIFF
avec la partie dateWEEK(MONDAY)
renvoie 1. DATETIME_DIFF
avec la partie dateISOWEEK
renvoie également 1 car les semaines ISO commencent le lundi.
DATETIME_TRUNC
DATETIME_TRUNC(datetime_expression, part)
Description
Trouve un objet DATETIME
à la granularité de part
.
DATETIME_TRUNC
supporte les valeurs suivantes pour part
:
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
DAY
WEEK
-
WEEK(<WEEKDAY>)
: Tronquedatetime_expression
à la limite de semaine précédente, où les semaines commencent leWEEKDAY
. Les valeurs valides pourWEEKDAY
sontSUNDAY
,MONDAY
,TUESDAY
,WEDNESDAY
,THURSDAY
,FRIDAY
, etSATURDAY
. -
ISOWEEK
: Tronquedatetime_expression
à la limite de semaine précédenteISO 8601. LesISOWEEK
commencent le lundi. Le premierISOWEEK
de chaque année ISO contient le premier jeudi de l’année civile grégorienne correspondante. Toutedate_expression
année antérieure à celle-ci sera tronquée au lundi précédent. MONTH
QUARTER
YEAR
-
ISOYEAR
: Tronquedatetime_expression
à la limite de l’année précédente de la semaine ISO 8601. La limite de l’année ISO est le lundi de la première semaine dont le jeudi appartient à l’année calendaire grégorienne correspondante.
Retourner le type de données
DATETIME
Exemples
Dans l’exemple suivant, le DATETIME
original tombe un dimanche. Comme lepart
est WEEK(MONDAY)
, DATE_TRUNC
renvoie le DATETIME
pour le lundi précédent.
Dans l’exemple suivant, le datetime_expression
original est dans l’année civile grégorienne 2015. Cependant, DATETIME_TRUNC
avec la partie date ISOYEAR
tronque le datetime_expression
au début de l’année ISO, et non de l’année civile grégorienne. Le premier jeudi de l’année civile 2015 était le2015-01-01, donc l’année ISO 2015 commence le lundi précédent, 2014-12-29.Par conséquent, la limite de l’année ISO précédant le datetime_expression
2015-06-15 00:00:00 est 2014-12-29.
FORMAT_DATETIME
FORMAT_DATETIME(format_string, datetime_expression)
Description
Formate un objet DATETIME
selon le format_string
spécifié. VoirEléments de format pris en charge pour DATETIMEpour une liste des éléments de format que cette fonction prend en charge.
Type de données de retour
STRING
Exemples
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 |+-------------+
DERNIER JOUR
LAST_DAY(datetime_expression)
Description
Retourne le dernier jour à partir d’une expression datetime qui contient la date.Ceci est couramment utilisé pour retourner le dernier jour du mois.
Vous pouvez optionnellement spécifier la partie de la date pour laquelle le dernier jour est retourné.Si ce paramètre n’est pas utilisé, la valeur par défaut est MONTH
.LAST_DAY
supporte les valeurs suivantes pour date_part
:
YEAR
QUARTER
MONTH
-
WEEK
. Equivalent à 7DAY
s. -
WEEK(<WEEKDAY>)
.<WEEKDAY>
représente le jour de la semaine de départ.Les valeurs valides sontSUNDAY
,MONDAY
,TUESDAY
,WEDNESDAY
,THURSDAY
,FRIDAY
, etSATURDAY
. -
ISOWEEK
. Utilise les limites de la semaine ISO 8601. Les semaines ISO commencent le lundi. -
ISOYEAR
. La limite de l’année ISO est le lundi de la première semaine dont le jeudi appartient à l’année civile grégorienne correspondante.
Type de données de retour
DATE
Exemple
Ceux-ci retournent tous deux le dernier jour du mois:
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 |+------------+
Cela retourne le dernier jour de l’année:
SELECT LAST_DAY(DATETIME '2008-11-25 15:30:00', YEAR) AS last_day+------------+| last_day |+------------+| 2008-12-31 |+------------+
Cela retourne le dernier jour de la semaine pour une semaine qui commence un dimanche :
SELECT LAST_DAY(DATETIME '2008-11-10 15:30:00', WEEK(SUNDAY)) AS last_day+------------+| last_day |+------------+| 2008-11-15 |+------------+
Cela renvoie le dernier jour de la semaine pour une semaine qui commence un lundi:
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
Convertit une représentation en chaîne d’un temps de date en un objetDATETIME
.
format_string
contient les éléments de format qui définissent comment datetime_string
est formaté. Chaque élément dansdatetime_string
doit avoir un élément correspondant dans format_string
. L’emplacement de chaque élément dans format_string
doit correspondre à l’emplacement de chaque élément dans datetime_string
.
La chaîne de format supporte entièrement la plupart des éléments de format, à l’exception de%Q
, %a
, %A
,%g
, %G
, %j
, %P
, %u
, %U
, %V
, %w
, et %W
.
PARSE_DATETIME
analyse string
selon les règles suivantes:
- Champs non spécifiés. Tout champ non spécifié est initialisé à partir de
1970-01-01 00:00:00.0
. Par exemple, si l’année n’est pas spécifiée, elle est initialisée à1970
. - Noms insensibles à la casse. Les noms, tels que
Monday
etFebruary
, sont insensibles à la casse. - Espace blanc. Un ou plusieurs espaces blancs consécutifs dans la chaîne de format correspondent à zéro ou plusieurs espaces blancs consécutifs dans la chaîne
DATETIME
. Les espaces blancs de tête et de queue dans la chaîneDATETIME
sont toujours autorisés, même s’ils ne sont pas dans la chaîne de format. - Priorité du format. Lorsque deux éléments de format ou plus ont des informations qui se chevauchent, le dernier prévaut généralement sur les précédents, à quelques exceptions près. Par exemple,
%F
et%Y
affectent tous deux l’année, donc le premier élément prévaut sur le dernier. Voir les descriptions de%s
,%C
, et%y
dansEléments de format supportés pour DATETIME.
Retourner le type de données
DATETIME
Exemples
Les exemples suivants analysent un littéral STRING
comme unDATETIME
.
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 |+---------------------+
L’exemple suivant analyse un littéral STRING
contenant une date dans un format de langage naturel en tant queDATETIME
.
SELECT PARSE_DATETIME('%A, %B %e, %Y','Wednesday, December 19, 2018') AS datetime;+---------------------+| datetime |+---------------------+| 2018-12-19T00:00:00 |+---------------------+
Éléments de format pris en charge pour DATETIME
Sauf indication contraire, les fonctions DATETIME
qui utilisent des chaînes de format prennent en charge les éléments suivants:
.