Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Types de données compatibles avec l'ancien SQL
Ce document détaille les types de données compatibles avec l'ancien SQL, la syntaxe de requête de BigQuery. La syntaxe de requête privilégiée pour BigQuery est GoogleSQL. Pour en savoir plus sur les types de données du langage GoogleSQL, consultez la page Types de données GoogleSQL.
Types de données compatibles avec l'ancien SQL
Vos données peuvent inclure les types de données suivants :
Type de données
Valeurs possibles
STRING
Données de type caractères de longueur variable (UTF-8).
BYTES
Données binaires de longueur variable.
Les données BYTES importées doivent être encodées en base64, à l'exception des données BYTES Avro que BigQuery peut lire et convertir.
Les données BYTES lues depuis une table BigQuery sont encodées en base64, à moins que vous ne les exportiez au format Avro, auquel cas le type de données bytes Avro s'applique.
NOMBRE ENTIER
Entier signé de 64 bits.
Si vous utilisez l'API BigQuery pour charger un entier situé en dehors de la plage [-253+1, 253-1] (dans la plupart des cas, cela signifie supérieur à 9 007 199 254 740 991), dans une colonne d'entiers (INT64), vous devez la transmettre en tant que chaîne pour éviter toute corruption des données.
Ce problème est causé par une limite de taille d'entier dans JSON/ECMAScript.
Pour en savoir plus, consultez la section Nombre de la RFC 7159.
FLOAT
Format à virgule flottante avec deux décimales.
NUMERIC
L'ancien SQL est compatible de façon limitée avec le type de données NUMERIC. Pour en savoir plus, consultez la section Valeurs numériques exactes en ancien SQL.
BIGNUMERIC
L'ancien SQL est compatible de façon limitée avec le type de données BIGNUMERIC. Pour en savoir plus, consultez la section Valeurs numériques exactes en ancien SQL.
BOOLÉEN
Format CSV : 1 ou 0, true ou false, t ou f, yes ou no, ou y ou n (tous non sensibles à la casse).
Format JSON : true ou false (non sensibles à la casse).
RECORD
Collection d'un ou de plusieurs autres champs.
TIMESTAMP
Vous pouvez décrire les données de type TIMESTAMP comme étant des horodatages UNIX, ou des dates et heures de calendrier. BigQuery stocke les données TIMESTAMP en interne sous la forme d'un code temporel UNIX avec une précision de l'ordre de la microseconde.
Horodatages UNIX
Un nombre décimal positif ou négatif. Un nombre positif spécifie le nombre de secondes écoulées depuis l'itération (1970-01-01 00:00:00 UTC), et un nombre négatif spécifie le nombre de secondes avant l'itération. Les décimales sont conservées jusqu'à la sixième (précision à la microseconde).
Chaînes de date et heure
Chaîne de date et heure au format YYYY-MM-DD HH:MM:SS. Les spécificateurs UTC et Z sont acceptés.
Vous pouvez fournir un décalage horaire dans vos chaînes de date et heure, mais BigQuery ne conserve pas le décalage après la conversion de la valeur dans son format interne. Si vous devez conserver les données de fuseau horaire d'origine, stockez le décalage horaire dans une colonne distincte. Un décalage de fuseau horaire à un chiffre doit commencer par un zéro.
Les chaînes de date et heure doivent être indiquées lors de l'utilisation du format JSON.
Exemples
Les exemples suivants montrent des méthodes identiques pour décrire des dates spécifiques, dans un format de code temporel UNIX et dans un format de chaîne de date et heure.
Événement
Format de code temporel UNIX
Format de chaîne de date et heure
Tremblement de terre mineur (M4.2) près d'Oklahoma City
Vous pouvez lire les valeurs de type NUMERIC ou BIGNUMERIC dans des clauses non modificatrices telles que SELECT list (with aliases), GROUP BY keys et les champs d'intercommunication dans les fonctions analytiques, etc. Cependant, tout calcul sur des valeurs NUMERIC ou BIGNUMERIC (y compris les comparaisons) produit des résultats non définis.
Les fonctions de conversion suivantes sont compatibles avec l'ancien SQL :
CAST(<numeric> AS STRING)
CAST(<bignumeric> AS STRING)
CAST(<string> AS NUMERIC)
CAST(<string> AS BIGNUMERIC)
Types de données de temps civil en ancien SQL
Vous pouvez afficher les types de données de temps civil (DATE, TIME et DATETIME) et les traiter avec des opérateurs non modificateurs tels que SELECT list (with aliases), GROUP BY keys, les champs d'intercommunication dans les fonctions analytiques, etc. En revanche, certains calculs sur les valeurs de temps civil, comme les comparaisons, produisent des résultats non définis.
Les fonctions de conversion suivantes sont compatibles avec l'ancien SQL :
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 pratique, l'ancien SQL interprète les valeurs de temps civil comme des nombres entiers, et les opérations sur des nombres entiers qui, selon vous, sont des valeurs de temps civil produisent des résultats inattendus.
Pour calculer des valeurs à l'aide de types de données de temps civil, utilisez le langage GoogleSQL, qui est compatible avec toutes les opérations SQL sur les types de données DATE, DATETIME et TIME.
Étapes suivantes
Pour définir le type de données d'un champ à l'aide de l'API, consultez la section schema.fields.type.
Pour connaître les types de données GoogleSQL, consultez la section Types de données.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/09/04 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 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)."]]