Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Tipi di dati SQL precedenti
Questo documento descrive in dettaglio i tipi di dati supportati dalla sintassi delle query SQL precedente di BigQuery. La sintassi di query preferita per BigQuery è GoogleSQL. Per informazioni sui tipi di dati in GoogleSQL, consulta
i tipi di dati di GoogleSQL.
Tipi di dati SQL precedenti
I tuoi dati possono includere i seguenti tipi di dati:
Tipo di dati
Valori possibili
STRING
Dati di caratteri (UTF-8) di lunghezza variabile.
BYTES
Dati binari di lunghezza variabile.
I dati BYTES importati devono essere codificati in base64, ad eccezione dei dati BYTES Avro,
che BigQuery può leggere e convertire.
I dati BYTES letti da una tabella BigQuery sono codificati in base64,
a meno che non esporti in formato Avro, nel qual caso si applica il tipo di dato Avro.
INTEGER
Numero intero a 64 bit con segno.
Se utilizzi l'API BigQuery per caricare un numero intero al di fuori dell'intervallo
[-253+1, 253-1] (nella maggior parte dei casi,
significa maggiore di 9.007.199.254.740.991), in una colonna di numeri interi
(INT64), devi passarlo come stringa per evitare la corruzione dei dati.
Questo problema è causato da una limitazione delle dimensioni degli interi in JSON/ECMAScript.
Per ulteriori informazioni, consulta
la sezione Numeri di RFC 7159.
L'SQL precedente ha un supporto limitato per BIGNUMERIC. Per ulteriori informazioni, consulta Numeri esatti in SQL precedente.
BOOLEANO
Formato CSV:1 o 0, true o false, t o f, yes o no oppure y o n (tutte le lettere non sono sensibili alle maiuscole).
Formato JSON:true o false (non è sensibile alle maiuscole).
RECORD
Una raccolta di uno o più altri campi.
TIMESTAMP
Puoi descrivere i tipi di dati TIMESTAMP come timestamp UNIX o date e ora di calendario. BigQuery memorizza internamente i dati TIMESTAMP come timestamp UNIX con una precisione di microsecondi.
Timestamp UNIX
Un numero decimale positivo o negativo. Un numero positivo specifica il numero di secondi dall'epoca (01-01-1970 00:00:00 UTC) e un numero negativo specifica il numero di secondi prima dell'epoca. Vengono conservate fino a 6 cifre decimali (precisione in microsecondi).
Stringhe di data e ora
Una stringa di data e ora nel formato YYYY-MM-DD HH:MM:SS. I parametri UTC e Z sono supportati.
Puoi specificare un offset di fuso orario nelle stringhe di data e ora, ma
BigQuery non conserva l'offset dopo aver convertito il valore nel suo
formato interno. Se devi conservare i dati originali del fuso orario,
archivia l'offset del fuso orario in una colonna separata. Lo zero iniziale è obbligatorio quando specifichi un offset del fuso orario a una cifra.
Le stringhe di data e ora devono essere racchiuse tra virgolette quando si utilizza il formato JSON.
Esempi
Gli esempi riportati di seguito mostrano modi identici per descrivere date specifiche, sia in formato timestamp UNIX che in formato di stringa di data e ora.
Evento
Formato del timestamp UNIX
Formato della stringa data/ora
Terremoto di lieve entità (M4,2) nei pressi di Oklahoma City
L'SQL precedente ha un supporto limitato per DATE. Per ulteriori informazioni, consulta Ora civile in SQL precedente.
TEMPO
L'SQL precedente ha un supporto limitato per TIME. Per ulteriori informazioni, consulta Ora civile in SQL precedente.
DATETIME
L'SQL precedente ha un supporto limitato per DATETIME. Per ulteriori informazioni, consulta Ora civile in SQL precedente.
Numero esatto in SQL precedente
Puoi leggere i valori NUMERIC o BIGNUMERIC in clausole non modificatrici come
SELECT list (with aliases), GROUP BY keys e campi di passaggio nelle
funzioni finestra e così via. Tuttavia, qualsiasi calcolo sui valori NUMERIC o BIGNUMERIC, inclusi i confronti, produce risultati non definiti.
Le seguenti funzioni di conversione e conversione sono supportate in SQL precedente:
CAST(<numeric> AS STRING)
CAST(<bignumeric> AS STRING)
CAST(<string> AS NUMERIC)
CAST(<string> AS BIGNUMERIC)
Tempo civile in SQL precedente
Puoi leggere i tipi di dati relativi al tempo civile (DATE, TIME e DATETIME) ed elaborarli con operatori non modificatori come SELECT list (with aliases), GROUP BY keys e campi di passaggio nelle funzioni window e così via. Tuttavia, qualsiasi altro calcolo sui valori del tempo civile, inclusi i confronti, produce risultati non definiti.
Le seguenti funzioni di conversione e trasmissione sono supportate in SQL precedente:
CAST(<date> AS STRING)
CAST(<time> AS STRING)
CAST(<datetime> AS STRING)
CAST(<string> AS DATE)
CAST(<string> AS TIME)
CAST(<string> AS DATETIME)
In pratica, SQL precedente interpreta i valori di tempo civile come numeri interi e le operazioni su numeri interi che ritieni essere valori di tempo civile producono risultati imprevisti.
Per calcolare i valori utilizzando i tipi di dati relativi al tempo civile, valuta la possibilità di utilizzare GoogleSQL, che supporta tutte le operazioni SQL sui tipi di dati DATE, DATETIME e TIME.
Passaggi successivi
Per impostare il tipo di dati di un campo utilizzando l'API, consulta schema.fields.type.
Per i tipi di dati di GoogleSQL, vedi tipi di dati.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Difficile da capire","hardToUnderstand","thumb-down"],["Informazioni o codice di esempio errati","incorrectInformationOrSampleCode","thumb-down"],["Mancano le informazioni o gli esempi di cui ho bisogno","missingTheInformationSamplesINeed","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 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)."]]