Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
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 de preferência para o BigQuery
é o GoogleSQL. Para informações sobre tipos de dados no GoogleSQL, consulte este link.
Tipos de dados do SQL legado
Os dados podem ser dos tipos a seguir:
Tipo de dados
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
Inteiro assinado de 64 bits.
Se você estiver usando a API BigQuery para carregar um número inteiro fora do intervalo
de [-253+1, 253-1) (na maioria dos casos, isso
significa maior que 9.007.199.254.740.991), em uma coluna de números inteiros
(INT64), você precisa transmiti-la como uma string para evitar o corrompimento dos dados.
Esse problema é causado por uma limitação no tamanho inteiro em JSON/ECMAScript.
Para mais informações, consulte a
seção "Números" da RFC 7159.
FLOAT
Formato de ponto flutuante de precisão dupla.
NUMERIC
O SQL legado tem suporte limitado para NUMERIC. Para mais informações,
consulte NUMERIC exato no SQL legado.
Formato CSV:1 ou 0, true ou false, t ou f, yes ou no, ou y ou n (não diferenciam maiúsculas de minúsculas).
Formato JSON:true ou false (não diferenciam maiúsculas de minúsculas).
RECORD
Um conjunto de um ou mais campos.
TIMESTAMP
É possível descrever os tipos de dados TIMESTAMP como datas do calendário ou carimbos de data/hora do UNIX. 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 época (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 mantidas.
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.
É possível fornecer uma compensação de fuso horário nas strings de data e hora, mas o BigQuery não mantém a diferença após converter o valor no formato interno dele. Se for necessário manter os dados de acordo com o fuso horário original, armazene essa diferença em uma coluna separada. O zero inicial é necessário quando você especifica uma diferença de fuso horário de um dígito.
As strings de data e hora precisam estar entre aspas ao usar o 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.
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.
Numérico exato no SQL legado
É possível ler valores NUMERIC ou BIGNUMERIC em cláusulas inalteráveis, como
SELECT list (with aliases), GROUP BY keys e campos de passagem em
funções analíticas, e assim por diante. No entanto, qualquer cálculo com valores NUMERIC ou
BIGNUMERIC, 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(<bignumeric> AS STRING)
CAST(<string> AS NUMERIC)
CAST(<string> AS BIGNUMERIC)
Hora civil no SQL legado
É possível 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 GoogleSQL, que é compatível com todas as operações SQL nos tipos de dados DATE, DATETIME e TIME.
A seguir
Para definir o tipo de dados de um campo usando a API, consulte schema.fields.type.
Consulte os tipos de dados do GoogleSQL em Tipos de dados.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-09-03 UTC."],[[["\u003cp\u003eLegacy SQL supports a variety of data types, including STRING, BYTES, INTEGER, FLOAT, NUMERIC, BIGNUMERIC, BOOLEAN, RECORD, TIMESTAMP, DATE, TIME, and DATETIME.\u003c/p\u003e\n"],["\u003cp\u003eLegacy SQL has limited support for NUMERIC, BIGNUMERIC, DATE, TIME, and DATETIME data types, restricting their use to non-modifying operations and specific casting functions.\u003c/p\u003e\n"],["\u003cp\u003eFor data types such as BYTES, BigQuery reads and converts Avro BYTES data, and when reading from BigQuery tables it are base64-encoded unless exported to Avro format.\u003c/p\u003e\n"],["\u003cp\u003eTIMESTAMP data can be represented as either UNIX timestamps or date and time strings, with BigQuery internally storing them as UNIX timestamps with microsecond precision.\u003c/p\u003e\n"],["\u003cp\u003eWhile legacy SQL provides these types, GoogleSQL is the preferred query syntax and offers full support for all SQL operations on DATE, DATETIME, and TIME data types.\u003c/p\u003e\n"]]],[],null,["# Legacy SQL data types\n=====================\n\n\nThis document details the data types supported by BigQuery's\nlegacy SQL query syntax. The preferred query syntax for BigQuery\nis GoogleSQL. For information on data types in GoogleSQL, see\nthe [GoogleSQL data types](/bigquery/docs/reference/standard-sql/data-types).\n\nLegacy SQL data types\n---------------------\n\nYour data can include the following data types:\n\nExact numeric in legacy SQL\n---------------------------\n\nYou can read NUMERIC or BIGNUMERIC values in non-modifying clauses such as\n`SELECT list (with aliases)`, `GROUP BY keys`, and pass-through fields in\nwindow functions, and so on. However, any computation over NUMERIC or\nBIGNUMERIC values, including comparisons, produces undefined results.\n\nThe following cast and conversion functions are supported in legacy SQL:\n\n- `CAST(\u003cnumeric\u003e AS STRING)`\n- `CAST(\u003cbignumeric\u003e AS STRING)`\n- `CAST(\u003cstring\u003e AS NUMERIC)`\n- `CAST(\u003cstring\u003e AS BIGNUMERIC)`\n\nCivil time in legacy SQL\n------------------------\n\nYou can read civil time data types---DATE, TIME, and\nDATETIME---and process them with non-modifying operators such as\n`SELECT list (with aliases)`, `GROUP BY keys`, and pass-through fields in\nwindow functions, etc. However, any other computation over civil time values,\nincluding comparisons, produces undefined results.\n\nThe following casts and conversion functions are supported in legacy SQL:\n\n- `CAST(\u003cdate\u003e AS STRING)`\n- `CAST(\u003ctime\u003e AS STRING)`\n- `CAST(\u003cdatetime\u003e AS STRING)`\n- `CAST(\u003cstring\u003e AS DATE)`\n- `CAST(\u003cstring\u003e AS TIME)`\n- `CAST(\u003cstring\u003e AS DATETIME)`\n\nIn practice, legacy SQL interprets civil time values as integers, and operations\non integers that you think are civil time values produce unexpected results.\n\nTo compute values using civil time data types, consider\n[GoogleSQL](/bigquery/sql-reference), which supports all SQL\noperations on the\n[DATE](/bigquery/sql-reference/data-types#date-type),\n[DATETIME](/bigquery/sql-reference/data-types#datetime-type), and\n[TIME](/bigquery/sql-reference/data-types#time-type) data types.\n\nWhat's next\n-----------\n\n- To set a field's data type using the API, see [`schema.fields.type`](/bigquery/docs/reference/rest/v2/tables#TableFieldSchema.FIELDS.type).\n- For GoogleSQL data types, see [data types](/bigquery/sql-reference/data-types)."]]