Tipos de dados do SQL legado

Neste documento, detalharemos os tipos de dados aceitos pela sintaxe de consulta SQL legada do BigQuery. A sintaxe de consulta preferida do BigQuery é o SQL padrão. Para informações sobre os tipos de dados no SQL padrão, consulte os Tipos de dados do SQL padrão.

Tipos de dados do SQL legado

Os dados podem ser dos tipos a seguir:

Tipo de dado Valores possíveis
STRING Dados de caracteres de comprimento variável (UTF-8).
BYTES Dados binários de comprimento variável.
  • Os dados BYTES importados precisam ser codificados em base64, exceto os do Avro, que o BigQuery pode ler e converter.
  • Os dados BYTES lidos a partir de uma tabela do BigQuery são codificados em base64, a menos que você os exporte para o formato Avro. Nesse caso, o tipo de dados BYTES do Avro é válido.
INTEGER Número inteiro assinado de 64 bits.
FLOAT Formato de ponto flutuante de precisão dupla.
NUMERIC O SQL legado tem suporte limitado para NUMERIC. Para mais informações, consulte NUMERIC no SQL legado.
BOOLEAN
  • Formato CSV: 1 ou 0, true ou false, t ou f, yes ou no, ou y ou n (sem distinção de maiúsculas e minúsculas)
  • Formato JSON: true ou false (sem distinção de maiúsculas e minúsculas)
RECORD Um conjunto de um ou mais campos.
TIMESTAMP

Você pode descrever os tipos de dados TIMESTAMP como carimbos de data/hora do UNIX ou datas do calendário. O BigQuery armazena dados TIMESTAMP internamente como um carimbo de data/hora do UNIX com precisão de microssegundos.

Carimbos de data/hora do UNIX

Um número decimal positivo ou negativo. Um número positivo especifica o número de segundos a partir do início da era Unix, ou epoch time (01/01/1970, 00h00m00s UTC), e um número negativo especifica o número de segundos antes disso. Até seis casas decimais com precisão de microssegundos são preservadas.

Strings de data e hora

Uma string de data e hora no formato YYYY-MM-DD HH:MM:SS. Os especificadores UTC e Z são compatíveis.

Você pode fornecer uma compensação de fuso horário nas strings de data e hora, mas o BigQuery não preserva a compensação após converter o valor no formato interno dele. Se for necessário preservar os dados do fuso horário original, armazene a essa compensação em uma coluna separada. O zero inicial é necessário quando você especifica um deslocamento de fuso horário de um dígito.

As strings de data e hora precisam estar entre aspas durante o uso do formato JSON.

Exemplos

Os exemplos a seguir mostram maneiras idênticas de descrever datas específicas, nos formatos de strings de data e hora e carimbos de data/hora do UNIX.

Evento Formato de carimbo de data/hora do UNIX Formato da string de data/hora
Terremoto pequeno (M4,2) perto de Oklahoma City

1408452095.220
1408452095.220000

2014-08-19 07:41:35.220 -05:00
2014-08-19 12:41:35.220 UTC
2014-08-19 12:41:35.220
2014-08-19 12:41:35.220000
2014-08-19T12:41:35.220Z
Neil Armstrong pisa na Lua

-14182916

1969-07-20 20:18:04
1969-07-20 20:18:04 UTC
1969-07-20T20:18:04
Prazo para a correção do bug do milênio

253402300800
2.53402300800e11

10000-01-01 00:00
DATE O SQL legado tem compatibilidade limitada para DATE. Para mais informações, consulte Hora civil no SQL legado.
TIME O SQL legado tem compatibilidade limitada para TIME. Para mais informações, consulte Hora civil no SQL legado.
DATETIME O SQL legado tem suporte limitado para DATETIME. Para mais informações, consulte Hora civil no SQL legado.

NUMERIC no SQL legado

É possível ler valores NUMERIC e processá-los com operadores não modificadores, como SELECT list (with aliases), GROUP BY keys e campos de passagem em funções analíticas e assim por diante. No entanto, qualquer outro cálculo com os valores de NUMERIC, incluindo comparações, produz resultados indefinidos.

As seguintes funções de cast e conversão têm suporte no SQL legado:

  • CAST(<numeric> AS STRING)
  • CAST(<string> AS NUMERIC)

Hora civil no SQL legado

Você pode ler tipos de dados de hora civil (DATE, TIME e DATETIME) e processá-los com operadores não modificadores, como SELECT list (with aliases), GROUP BY keys e campos de passagem em funções analíticas etc. No entanto, outros cálculos sobre valores de hora civil, incluindo comparações, produzem resultados indefinidos.

Os seguintes casts e funções de conversão são compatíveis no SQL legado:

  • CAST(<date> AS STRING)
  • CAST(<time> AS STRING)
  • CAST(<datetime> AS STRING)
  • CAST(<string> AS DATE)
  • CAST(<string> AS TIME)
  • CAST(<string> AS DATETIME)

Na prática, o SQL legado interpreta os valores de hora civil como números inteiros, e as operações sobre números inteiros que você acha que são valores de hora civil produzem resultados inesperados.

Para calcular valores usando tipos de dados de hora civil, utilize o SQL padrão, que é compatível com todas as operações SQL nos tipos DATE, DATETIME e TIME.

Próximas etapas

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.