BigQuery suporta o seguinte DATETIME
funções.
Todas as saídas são automaticamente formatadas de acordo com a ISO 8601, separando data e hora com umT
.
CURRENT_DATETIME
CURRENT_DATETIME()
Descrição
Retorna a hora actual como um DATETIME
objecto.
Esta função suporta um parâmetro opcional timezone
.Veja definições de fuso horário para informações sobre como especificar um fuso horário.
Retornar Tipo de Dados
DATETIME
Exemplo
SELECT CURRENT_DATETIME() as now;+----------------------------+| now |+----------------------------+| 2016-05-19T10:38:47.046465 |+----------------------------+
DATETIME
Descrição
- Constrói um objeto
DATETIME
usando valores INT64 representando o ano, mês, dia, hora, minuto e segundo. - Constrói um objeto
DATETIME
usando um objeto DATE e um objeto TIME opcional. - Constrói um objeto
DATETIME
usando um objeto TIMESTAMP. Suporta um parâmetro anopcional para especificar um fuso horário. Se nenhum fuso horário for especificado, o fuso horário padrão, UTC, é usado.
Return Data Type
DATETIME
Exemplo
EXTRATO
EXTRACT(part FROM datetime_expression)
Descrição
Retorna um valor que corresponde ao especificado part
a partir de um valor fornecido datetime_expression
.
Dispostos part
valores são:
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
DAYOFWEEK
DAY
DAYOFYEAR
-
WEEK
: Retorna o número da semana da data no intervalo . Semanas começam com domingo, e as datas anteriores ao primeiro domingo do ano estão na semana 0. -
WEEK(<WEEKDAY>)
: Devolve o número da semana dedatetime_expression
no intervalo . As semanas começam emWEEKDAY
.datetime
s antes do primeiroWEEKDAY
do ano estão na semana 0. Os valores válidos paraWEEKDAY
sãoSUNDAY
,MONDAY
,TUESDAY
,WEDNESDAY
,THURSDAY
,FRIDAY
, eSATURDAY
. -
ISOWEEK
: Devolve o número de semana ISO 8601 dodatetime_expression
.ISOWEEK
: Começa na segunda-feira. Os valores de retorno estão no intervalo . O primeiroISOWEEK
de cada ano ISO começa noMonday antes da primeira quinta-feira do ano calendário gregoriano. MONTH
QUARTER
YEAR
-
ISOYEAR
: Retorna o ano de numeração ISO 8601, que é o ano civil Gregoriano contendo aQuinta-Feira da semana à qualdate_expression
pertence. DATE
TIME
Valores retornados truncam períodos de tempo de ordem inferior. Por exemplo, quando extrair segundos, EXTRACT
truncata os valores de milissegundos e microssegundos.
Retornar tipo de dados
INT64
, excepto nos seguintes casos:
- Se
part
forDATE
, retorna um objecto. - Se
part
forTIME
, retorna um objectoTIME
.
Exemplos
No exemplo seguinte, EXTRACT
retorna um valor correspondente a HOUR
time part.
SELECT EXTRACT(HOUR FROM DATETIME(2008, 12, 25, 15, 30, 00)) as hour;+------------------+| hour |+------------------+| 15 |+------------------+
No exemplo seguinte, EXTRACT
retorna valores correspondentes a diferentes times parts de uma coluna de datetimes.
No exemplo seguinte, datetime_expression
cai em um domingo. EXTRACT
calula a primeira coluna usando semanas que começam no domingo, e calcula a segunda coluna usando semanas que começam na segunda-feira.
DATETIME_ADD
DATETIME_ADD(datetime_expression, INTERVAL int64_expression part)
Descrição
Adiciona int64_expression
unidades de part
ao objeto DATETIME
.
DATETIME_ADD
suporta os seguintes valores para part
:
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
DAY
-
WEEK
. Equivalente a 7DAY
s. MONTH
QUARTER
YEAR
Peças de MÊS, QUARTO, e ANO quando a data está no (ou próximo do) último dia do mês. Se o mês resultante tiver poucos dias do que o dia do DATETIME original, então o dia do resultado é o último dia do novo mês.
Tipo de Dados de Retorno
DATETIME
Exemplo
DATETIME_SUB
DATETIME_SUB(datetime_expression, INTERVAL int64_expression part)
Descrição
Subtractos int64_expression
unidades de part
do DATETIME
.
DATETIME_SUB
suporta os seguintes valores para part
:
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
DAY
-
WEEK
. Equivalente a 7DAY
s. MONTH
QUARTER
YEAR
Requere-se um manuseamento especial para MONTH
, QUARTER
, e YEAR
partes quando a data está no (ou próximo do) último dia do mês. Se o mês resultante tiver poucos dias pastorais do que o dia original DATETIME
, então o dia do resultado é o último dia do novo mês.
Return Data Type
DATETIME
Exemplo
DATETIME_DIFF
DATETIME_DIFF(datetime_expression_a, datetime_expression_b, part)
Descrição
Retorna o número de inteiro especificado part
intervalos entre doisDATETIME
objectos (datetime_expression_a
– datetime_expression_b
). Se o primeiro DATETIME
for anterior ao segundo, o resultado é negativo. Lança um erro se o cálculo ultrapassar o tipo de resultado, como se a diferença de inmicrossegundos entre os dois DATETIME
objetos transbordasse um valor deINT64
.
DATETIME_DIFF
suporta os seguintes valores para part
:
MICROSECOND
MILLISECOND
SECOND
-
MINUTE
HOUR
DAY
-
WEEK
: Esta parte da data começa no domingo. -
WEEK(<WEEKDAY>)
: Esta parte da data começa emWEEKDAY
. Valores válidos paraWEEKDAY
sãoSUNDAY
,MONDAY
,TUESDAY
,WEDNESDAY
,THURSDAY
,FRIDAY
, eSATURDAY
. -
ISOWEEK
: Utiliza os limites semanais ISO 8601. As semanas ISO começam na segunda-feira. -
MONTH
> -
QUARTER
> YEAR
- >
ISOYEAR
: Utiliza o limite do ano de numeração ISO 8601. O limite do ano ISO é a segunda-feira da primeira semana cuja quinta-feira pertence ao ano calendário gregoriano correspondente.
Tipo de dados de retorno
INT64
Exemplo
>O exemplo acima mostra o resultado de DATETIME_DIFF
para dois DATETIME
s que estão separados por 24 horas. DATETIME_DIFF
com a peça WEEK
retorna 1 porqueDATETIME_DIFF
conta o número de limites da peça neste intervalo deDATETIME
s. Cada WEEK
começa no domingo, portanto há um limite de peça entre Sábado, 2017-10-14 00:00:00
e Domingo, 2017-10-15 00:00:00
.
O exemplo seguinte mostra o resultado de DATETIME_DIFF
para duas datas indiferentes anos. DATETIME_DIFF
com a parte da data YEAR
retorna 3 porque contabiliza o número de limites do ano civil gregoriano entre os doisDATETIME
s. DATETIME_DIFF
com a parte da data ISOYEAR
retorna 2 porque o segundo DATETIME
pertence ao ano ISO 2015. A primeira quinta-feira do ano civil 2015 foi 2015-01-01, portanto o ano ISO 2015 começa no mês de Maio anterior, 2014-12-29.
O exemplo seguinte mostra o resultado de DATETIME_DIFF
para dois dias de insucessão. A primeira data cai numa segunda-feira e a segunda data cai numDomingo. DATETIME_DIFF
com a parte da data WEEK
retorna 0 porque esta parte de tempo usa semanas que começam no domingo. DATETIME_DIFF
com a parte da data WEEK(MONDAY)
retorna 1. DATETIME_DIFF
com a parte da dataISOWEEK
também retorna 1 porque as semanas ISO começam na segunda-feira.
DATETIME_TRUNC
DATETIME_TRUNC(datetime_expression, part)
Descrição
Truncates a DATETIME
objeto à granularidade de part
.
DATETIME_TRUNC
suporta os seguintes valores para part
:
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
DAY
WEEK
-
WEEK(<WEEKDAY>)
: Truncatasdatetime_expression
ao limite da semana anterior, onde as semanas começam emWEEKDAY
. Valores válidos paraWEEKDAY
sãoSUNDAY
,MONDAY
,TUESDAY
,WEDNESDAY
,THURSDAY
,FRIDAY
, eSATURDAY
. -
ISOWEEK
: Truncatasdatetime_expression
até ao limite da semana precedenteISO 8601.ISOWEEK
sbegin na segunda-feira. O primeiroISOWEEK
de cada ano ISO contém a primeiraQuinta-feira do ano civil gregoriano correspondente. Qualquerdate_expression
mais cedo que isso truncará para a segunda-feira anterior. MONTH
QUARTER
YEAR
-
ISOYEAR
: Truncatasdatetime_expression
para o limite do ano anterior ISO 8601-semana. O limite do ano ISO é a segunda-feira da primeira semana cuja quinta-feira pertence ao ano calendário gregoriano correspondente.
Tipo de dados de retorno
DATETIME
>
Exemplos
No exemplo seguinte, o original DATETIME
cai num domingo. Porque opart
é WEEK(MONDAY)
, DATE_TRUNC
devolve o DATETIME
para a segunda-feira anterior.
No exemplo seguinte, o original datetime_expression
está no ano civil gregoriano de 2015. No entanto, DATETIME_TRUNC
com a data ISOYEAR
truncata a parte datetime_expression
para o início do ano ISO, e não para o ano civil Gregoriano. A primeira quinta-feira do ano civil 2015 foi 2015-01-01, portanto o ano ISO 2015 começa na segunda-feira anterior, 2014-12-29. Portanto o limite do ano ISO anterior ao datetime_expression
2015-06-15 00:00:00 é 2014-12-29.
FORMAT_DATETIME
FORMAT_DATETIME(format_string, datetime_expression)
Descrição
Formatos a DATETIME
objecto de acordo com o especificado format_string
. VejaSupported Format Elements For DATETIME para uma lista de elementos de formato que esta função suporta.
Return Data Type
STRING
Exemplos
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)
Descrição
Retorna o último dia de uma expressão de data/hora que contém a data.Se este parâmetro não for usado, o valor padrão é MONTH
.LAST_DAY
suporta os seguintes valores para date_part
:
YEAR
QUARTER
MONTH
-
WEEK
. Equivalente a 7DAY
s. -
WEEK(<WEEKDAY>)
.<WEEKDAY>
representa o dia de início da semana. Os valores válidos sãoSUNDAY
,MONDAY
,TUESDAY
,WEDNESDAY
,THURSDAY
,FRIDAY
, eSATURDAY
. -
ISOWEEK
. Utiliza os limites da semana ISO 8601. As semanas ISO começam na segunda-feira. -
ISOYEAR
. Utiliza o limite do ano de numeração semanal ISO 8601. O limite do ano ISO é a segunda-feira da primeira semana cuja quinta-feira pertence ao ano civil gregoriano correspondente.
Tipo de dados de retorno
DATE
Exemplo
Estes dois retornam o último dia do mês:
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 |+------------+
Este retorna o último dia do ano:
SELECT LAST_DAY(DATETIME '2008-11-25 15:30:00', YEAR) AS last_day+------------+| last_day |+------------+| 2008-12-31 |+------------+
Este retorna o último dia da semana para uma semana que começa em um domingo:
SELECT LAST_DAY(DATETIME '2008-11-10 15:30:00', WEEK(SUNDAY)) AS last_day+------------+| last_day |+------------+| 2008-11-15 |+------------+
Este retorna o último dia da semana para uma semana que começa numa segunda-feira:
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)
Descrição
Converte uma representação em cadeia de uma data/hora para um objectoDATETIME
.
format_string
contém os elementos de formatação que definem como datetime_string
é formatado. Cada elemento emdatetime_string
deve ter um elemento correspondente em format_string
. A localização de cada elemento em format_string
deve corresponder à localização de cada elemento em datetime_string
.
A cadeia de formatação suporta totalmente a maioria dos elementos de formatação, excepto para%Q
, %a
, %A
,%g
, %G
, %j
, %P
, %u
, %U
, %V
, %w
, e %W
.
>PARSE_DATETIME
parses string
de acordo com as seguintes regras:
- Campos não especificados. Qualquer campo não especificado é inicializado a partir de
1970-01-01 00:00:00.0
. Por exemplo, se o ano não é especificado, então o padrão é1970
. - Nomes insensíveis a maiúsculas e minúsculas. Nomes, tais como
Monday
eFebruary
, são insensíveis a maiúsculas/minúsculas. - Espaço em branco. Um ou mais espaços brancos consecutivos no formato stringmatches zero ou mais espaços brancos consecutivos no formato stringmatches
DATETIME
. Espaços brancos à frente e atrás na stringDATETIME
são sempre permitidos, mesmo que não estejam na string de formato. - Prioridade de formato. Quando dois ou mais elementos de formato têm informação sobreposta, o último geralmente sobrepõe-se a qualquer um dos anteriores, com algumas excepções. Por exemplo, ambos
%F
e%Y
afetam o ano, então o auricular sobrepõe o mais recente. Veja a descrição de%s
,%C
, e%y
emSupported Format Elements For DATETIME.
Return Data Type
DATETIME
Exemplos
Os exemplos seguintes analisam a STRING
literal como aDATETIME
.
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 |+---------------------+
Os seguintes exemplos analisam a STRING
literalmente contendo uma data em formato de linguagem natural como aDATETIME
.
SELECT PARSE_DATETIME('%A, %B %e, %Y','Wednesday, December 19, 2018') AS datetime;+---------------------+| datetime |+---------------------+| 2018-12-19T00:00:00 |+---------------------+
Elementos de formato suportados para DATETIME
Sem notar o contrário, DATETIME
funções que usam cordas de formato suportam os seguintes elementos: