Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Tipos de datos de SQL heredado
En este documento, se detallan los tipos de datos que admite la sintaxis de consulta de SQL heredado de BigQuery. La sintaxis de consulta preferida para BigQuery es GoogleSQL. Para obtener información sobre los tipos de datos en GoogleSQL, consulta los tipos de datos de GoogleSQL.
Tipos de datos de SQL heredado
Tus datos pueden incluir los tipos de datos siguientes:
Tipo de datos
Valores posibles
STRING
Datos de caracteres de longitud variable (UTF-8)
BYTES
Datos binarios de longitud variable
Los datos BYTES importados deben estar codificados en base64, excepto los datos BYTES de Avro, que BigQuery puede leer y convertir.
Los datos BYTES que se leen en una tabla de BigQuery están codificados en base64, a menos que exportes al formato Avro, en cuyo caso, se aplica el tipo de datos Avro de bytes.
NÚMERO ENTERO
Número entero de 64 bits con firma
Si usas la API de BigQuery para cargar un número entero fuera del rango de [-253+1, 253-1] (en la mayoría de los casos, esto significa más de 9,007,199,254,740,991) en una columna entera (INT64), debes pasarla como string a fin de evitar la corrupción de datos.
Este problema se debe a una limitación del tamaño de los números enteros en JSON/ECMAScript.
Para obtener más información, consulta la sección Números de RFC 7159.
FLOAT
Formato de coma flotante de doble precisión
NUMERIC
SQL heredado tiene asistencia limitada para NUMERIC. A fin de obtener más información, consulta Númerico exacto en SQL heredado.
BIGNUMERIC
SQL heredado tiene una compatibilidad limitada para BIGNUMERIC. Para obtener más información, consulta Numérico exacto en SQL hereado.
BOOLEAN
Formato CSV:1 o 0, true o false, t o f, yes o no, o y o n (con distinción entre mayúsculas y minúsculas).
Formato JSON:true o false (con distinción entre mayúsculas y minúsculas).
RECORD
Una colección de uno o más campos
MARCA DE TIEMPO
Puedes describir los tipos de datos de MARCA DE TIEMPO como marcas de tiempo de UNIX o fechas de calendario. BigQuery almacena los datos de MARCA DE TIEMPO de forma interna como una marca de tiempo de UNIX con microsegundos de precisión.
Marcas de tiempo de UNIX
Un número decimal positivo o negativo. Un número positivo especifica la cantidad de segundos desde la época (1970-01-01 00:00:00 UTC) y un número negativo especifica la cantidad de segundos antes de la época. Se conservan hasta 6 decimales (con precisión en microsegundos).
Strings de fecha y hora
Una string de fecha y hora en el formato YYYY-MM-DD HH:MM:SS. Se admiten los especificadores UTC y Z.
Puedes proporcionar un desplazamiento de zona horaria en tus strings de fecha y hora, pero BigQuery no conserva el desplazamiento después de convertir el valor en su formato interno. Si necesitas conservar los datos de la zona horaria original, almacena el desplazamiento de la zona horaria en una columna separada. El cero inicial es obligatorio cuando especificas un desplazamiento de zona horaria de un solo dígito.
Las strings de fecha y hora se deben indicar cuándo se usa el formato JSON.
Ejemplos
En los ejemplos siguientes, se muestran formas idénticas de describir fechas específicas, tanto en formato de marca de tiempo de UNIX como de string de fecha y hora.
SQL heredado tiene asistencia limitada para FECHA. A fin de obtener más información, consulta Hora civil en SQL heredado.
TIME
SQL heredado tiene asistencia limitada para HORA. A fin de obtener más información, consulta Hora civil en SQL heredado.
DATETIME
SQL heredado tiene asistencia limitada para DATETIME. A fin de obtener más información, consulta Hora civil en SQL heredado.
Numérico exacto en SQL heredado
Puedes leer valores NUMERIC o BIGNUMERIC en cláusulas no modificables como SELECT list (with aliases) y GROUP BY keys, y pasar por campos en funciones analíticas, etcétera. Sin embargo, cualquier cálculo sobre valores NUMERIC o BIGNUMERIC, incluidas las comparaciones, produce resultados indefinidos.
Las funciones de conversión y conversión siguientes con compatibles con SQL heredado:
CAST(<numeric> AS STRING)
CAST(<bignumeric> AS STRING)
CAST(<string> AS NUMERIC)
CAST(<string> AS BIGNUMERIC)
Hora civil en SQL heredado
Puedes leer tipos de datos de hora civil (DATE, TIME y DATETIME) y procesarlos con operadores no modificables como SELECT list (with aliases), GROUP BY keys, y pasar por campos en funciones analíticas, etcétera. Sin embargo, cualquier otro cálculo sobre valores de hora civil, incluidas las comparaciones, produce resultados indefinidos.
Las siguientes funciones de transmisión y conversión son compatibles con SQL heredado:
CAST(<date> AS STRING)
CAST(<time> AS STRING)
CAST(<datetime> AS STRING)
CAST(<string> AS DATE)
CAST(<string> AS TIME)
CAST(<string> AS DATETIME)
En la práctica, el SQL heredado interpreta los valores de hora civil como números enteros, mientras que las operaciones sobre números enteros que crees que son valores de hora civil producen resultados inesperados.
Para calcular valores mediante tipos de datos de hora civil, ten en cuenta GoogleSQL, que admite todas las operaciones de SQL en tipos de datos DATE, DATETIME y TIME.
¿Qué sigue?
Para configurar un tipo de datos de campo mediante la API, consulta schema.fields.type.
Para ver los tipos de datos de GoogleSQL, consulta tipos de datos.
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Información o código de muestra incorrectos","incorrectInformationOrSampleCode","thumb-down"],["Faltan la información o los ejemplos que necesito","missingTheInformationSamplesINeed","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-09-04 (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)."]]