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
DATETIMEusando valores INT64 representando o ano, mês, dia, hora, minuto e segundo. - Constrói um objeto
DATETIMEusando um objeto DATE e um objeto TIME opcional. - Constrói um objeto
DATETIMEusando 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:
MICROSECONDMILLISECONDSECONDMINUTEHOURDAYOFWEEKDAYDAYOFYEAR-
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_expressionno intervalo . As semanas começam emWEEKDAY.datetimes antes do primeiroWEEKDAYdo ano estão na semana 0. Os valores válidos paraWEEKDAYsã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 primeiroISOWEEKde cada ano ISO começa noMonday antes da primeira quinta-feira do ano calendário gregoriano. MONTHQUARTERYEAR-
ISOYEAR: Retorna o ano de numeração ISO 8601, que é o ano civil Gregoriano contendo aQuinta-Feira da semana à qualdate_expressionpertence. DATETIME
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
partforDATE, retorna um objecto. - Se
partforTIME, retorna um objectoTIME.
Exemplos
No exemplo seguinte, EXTRACT retorna um valor correspondente a HOURtime 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. EXTRACTcalula 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:
MICROSECONDMILLISECONDSECONDMINUTEHOURDAY-
WEEK. Equivalente a 7DAYs. MONTHQUARTERYEAR
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:
MICROSECONDMILLISECONDSECONDMINUTEHOURDAY-
WEEK. Equivalente a 7DAYs. MONTHQUARTERYEAR
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:
MICROSECONDMILLISECONDSECOND-
MINUTE HOURDAY-
WEEK: Esta parte da data começa no domingo. -
WEEK(<WEEKDAY>): Esta parte da data começa emWEEKDAY. Valores válidos paraWEEKDAYsã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 DATETIMEs 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 deDATETIMEs. 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 doisDATETIMEs. 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:
MICROSECONDMILLISECONDSECONDMINUTEHOURDAYWEEK-
WEEK(<WEEKDAY>): Truncatasdatetime_expressionao limite da semana anterior, onde as semanas começam emWEEKDAY. Valores válidos paraWEEKDAYsãoSUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY, eSATURDAY. -
ISOWEEK: Truncatasdatetime_expressionaté ao limite da semana precedenteISO 8601.ISOWEEKsbegin na segunda-feira. O primeiroISOWEEKde cada ano ISO contém a primeiraQuinta-feira do ano civil gregoriano correspondente. Qualquerdate_expressionmais cedo que isso truncará para a segunda-feira anterior. MONTHQUARTERYEAR-
ISOYEAR: Truncatasdatetime_expressionpara 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 ISOYEARtruncata 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_expression2015-06-15 00:00:00 é 2014-12-29.
FORMAT_DATETIME
FORMAT_DATETIME(format_string, datetime_expression)
Descrição
Formatos a DATETIMEobjecto 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:
YEARQUARTERMONTH-
WEEK. Equivalente a 7DAYs. -
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
MondayeFebruary, 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 stringDATETIMEsã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
%Fe%Yafetam o ano, então o auricular sobrepõe o mais recente. Veja a descrição de%s,%C, e%yemSupported 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: