Tipos de dados SQL antigos
Este documento detalha os tipos de dados suportados pela sintaxe de consulta SQL antigo do BigQuery. A sintaxe de consulta preferida para o BigQuery é o GoogleSQL. Para obter informações sobre os tipos de dados no GoogleSQL, consulte os tipos de dados GoogleSQL.
Tipos de dados SQL antigos
Os seus dados podem incluir os seguintes tipos de dados:
Tipo de dados | Valores possíveis | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
STRING | Dados de carateres de comprimento variável (UTF-8). | ||||||||||||
BYTES |
Dados binários de comprimento variável.
|
||||||||||||
INTEGER |
Número inteiro com sinal de 64 bits. Se estiver a usar a API BigQuery para carregar um número inteiro fora do intervalo de [-253+1, 253-1] (na maioria dos casos, isto significa um número superior a 9 007 199 254 740 991) numa coluna de número inteiro (INT64), tem de o transmitir como uma string para evitar a danificação de dados. Este problema é causado por uma limitação no tamanho dos números inteiros em JSON/ECMAScript. Para mais informações, consulte a secção Números da RFC 7159. |
||||||||||||
FLOAT | Formato de vírgula flutuante de dupla precisão. | ||||||||||||
NUMERIC | O SQL antigo tem suporte limitado para NUMERIC. Para mais informações, consulte o artigo Número exato no SQL antigo. | ||||||||||||
BIGNUMERIC | O SQL antigo tem suporte limitado para BIGNUMERIC. Para mais informações, consulte o artigo Número exato no SQL antigo. | ||||||||||||
BOOLEAN |
|
||||||||||||
RECORD | Uma coleção de um ou mais outros campos. | ||||||||||||
TIMESTAMP |
Pode descrever os tipos de dados TIMESTAMP como indicações de tempo UNIX ou datas/horas de calendário. O BigQuery armazena dados TIMESTAMP internamente como uma data/hora UNIX com precisão de microssegundos. Indicações de tempo UNIX Um número decimal positivo ou negativo. Um número positivo especifica o número de segundos desde a época (1970-01-01 00:00:00 UTC) e um número negativo especifica o número de segundos antes da época. São preservadas até 6 casas decimais (precisão de microssegundos). Strings de data e hora Uma string de data e hora no formato Pode fornecer um desvio de fuso horário nas suas strings de data e hora, mas o BigQuery não preserva o desvio após converter o valor para o respetivo formato interno. Se precisar de preservar os dados originais do fuso horário, armazene o desvio do fuso horário numa coluna separada. O zero à esquerda é obrigatório quando especifica um desvio de fuso horário de um único dígito. As strings de data e hora têm de estar entre aspas quando usar o formato JSON. Exemplos Os exemplos seguintes mostram formas idênticas de descrever datas específicas, nos formatos de data/hora de string e de data/hora UNIX.
|
||||||||||||
DATA | O SQL antigo tem suporte limitado para DATE. Para mais informações, consulte o artigo Hora civil no SQL antigo. | ||||||||||||
HORA | O SQL antigo tem suporte limitado para TIME. Para mais informações, consulte o artigo Hora civil no SQL antigo. | ||||||||||||
DATA/HORA | O SQL antigo tem suporte limitado para DATETIME. Para mais informações, consulte o artigo Hora civil no SQL antigo. |
Número exato no SQL antigo
Pode ler valores NUMERIC ou BIGNUMERIC em cláusulas não modificadoras, como SELECT list (with aliases)
, GROUP BY keys
e campos de passagem em funções de janela, entre outros. No entanto, qualquer cálculo sobre valores NUMÉRICOS ou BIGNUMÉRICOS, incluindo comparações, produz resultados indefinidos.
As seguintes funções de conversão e conversão de tipo são suportadas no SQL antigo:
CAST(<numeric> AS STRING)
CAST(<bignumeric> AS STRING)
CAST(<string> AS NUMERIC)
CAST(<string> AS BIGNUMERIC)
Hora civil no SQL antigo
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 de janela, etc. No entanto, qualquer outro cálculo sobre valores de hora civil, incluindo comparações, produz resultados indefinidos.
As seguintes funções de conversão e conversões são suportadas no SQL antigo:
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, a SQL antiga interpreta os valores de tempo civil como números inteiros e as operações em números inteiros que considera serem valores de tempo civil produzem resultados inesperados.
Para calcular valores com tipos de dados de tempo civil, considere usar o GoogleSQL, que suporta todas as operações SQL nos tipos de dados DATE, DATETIME e TIME.
O que se segue?
- Para definir o tipo de dados de um campo através da API, consulte
schema.fields.type
. - Para os tipos de dados GoogleSQL, consulte os tipos de dados.