Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Jenis data legacy SQL
Dokumen ini menjelaskan jenis data yang didukung oleh sintaksis kueri legacy SQL dari BigQuery. Sintaksis kueri yang lebih disukai untuk BigQuery adalah GoogleSQL. Untuk informasi tentang jenis data di GoogleSQL, lihat Jenis data GoogleSQL.
Jenis data legacy SQL
Data Anda dapat mencakup jenis data berikut:
Jenis data
Nilai yang memungkinkan
STRING
Data karakter dengan panjang variabel (UTF-8).
BYTES
Data biner dengan panjang variabel.
Data BYTES yang diimpor harus berenkode base64, kecuali untuk data Avro BYTES, yang dapat dibaca dan dikonversi oleh BigQuery.
Data BYTES yang dibaca dari tabel BigQuery berenkode base64, kecuali jika Anda mengekspor ke format Avro, dalam hal ini jenis data Avro bytes berlaku.
INTEGER
Bilangan bulat 64-bit yang telah ditandai.
Jika Anda menggunakan BigQuery API untuk memuat bilangan bulat di luar rentang [-253+1, 253-1] (dalam sebagian besar kasus, berarti lebih besar dari 9.007.199.254.740.991), ke dalam kolom integer (INT64), Anda harus meneruskannya sebagai string untuk menghindari kerusakan data.
Masalah ini disebabkan oleh batasan ukuran integer di JSON/ECMAScript.
Untuk informasi lebih lanjut, lihat bagian Angka pada RFC 7159.
FLOAT
Format floating point presisi ganda.
NUMERIC
Legacy SQL memiliki dukungan terbatas untuk NUMERIC. Untuk mengetahui informasi selengkapnya, lihat Numerik persis dalam legacy SQL.
BIGNUMERIC
Legacy SQL memiliki dukungan terbatas untuk BIGNUMERIC. Untuk mengetahui informasi selengkapnya, lihat Numerik persis dalam legacy SQL.
BOOLEAN
Format CSV:1 atau 0, true atau false, t atau f, yes atau no, atau y atau n (semua tidak peka huruf besar/kecil).
Format JSON:true atau false (tidak peka huruf besar/kecil).
RECORD
Kumpulan satu atau beberapa kolom lain.
TIMESTAMP
Anda dapat mendeskripsikan jenis data TIMESTAMP sebagai stempel waktu UNIX atau tanggal dan waktu kalender. BigQuery menyimpan data TIMESTAMP secara internal sebagai stempel waktu UNIX dengan presisi mikrodetik.
Stempel waktu UNIX
Bilangan desimal positif atau negatif. Angka positif menentukan jumlah detik sejak epoch (1970-01-01 00:00:00 UTC), dan angka negatif menentukan jumlah detik sebelum epoch. Hingga 6 angka di belakang koma (presisi mikrodetik) akan dipertahankan.
String tanggal dan waktu
String tanggal dan waktu dalam format YYYY-MM-DD HH:MM:SS. Penentu UTC dan Z didukung.
Anda dapat memberikan offset zona waktu pada string tanggal dan waktu, tetapi BigQuery tidak mempertahankan offset setelah mengonversi nilai ke format internalnya. Jika Anda perlu mempertahankan data zona waktu asli, simpan offset zona waktu di kolom terpisah. Angka nol di awal wajib ada saat Anda menentukan offset zona waktu satu digit.
String tanggal dan waktu harus dikutip saat menggunakan format JSON.
Contoh
Contoh berikut menunjukkan cara yang identik untuk mendeskripsikan tanggal tertentu, dalam format stempel waktu UNIX serta format string tanggal dan waktu.
Legacy SQL memiliki dukungan terbatas untuk DATE. Untuk informasi selengkapnya, lihat Waktu sipil dalam legacy SQL.
TIME
Legacy SQL memiliki dukungan terbatas untuk TIME. Untuk informasi selengkapnya, lihat Waktu sipil dalam legacy SQL.
DATETIME
Legacy SQL memiliki dukungan terbatas untuk DATETIME. Untuk informasi selengkapnya, lihat Waktu sipil dalam legacy SQL.
Numerik yang tepat dalam legacy SQL
Anda dapat membaca nilai NUMERIC atau BIGNUMERIC dalam klausa yang tidak dapat diubah seperti SELECT list (with aliases), GROUP BY keys, dan kolom pass-through di fungsi jendela, dan seterusnya. Namun, setiap komputasi pada nilai NUMERIC atau BIGNUMERIC, termasuk perbandingan, memberikan hasil yang tidak ditentukan.
Fungsi transmisi dan konversi berikut didukung di legacy SQL:
CAST(<numeric> AS STRING)
CAST(<bignumeric> AS STRING)
CAST(<string> AS NUMERIC)
CAST(<string> AS BIGNUMERIC)
Waktu sipil dalam legacy SQL
Anda dapat membaca jenis data waktu sipil—DATE, TIME, dan DATETIME—serta memprosesnya dengan operator yang tidak dapat diubah seperti SELECT list (with aliases), GROUP BY keys, dan kolom pass-through di fungsi jendela, dll. Namun, komputasi lain apa pun atas nilai waktu sipil, termasuk perbandingan, memberikan hasil yang tidak ditentukan.
Fungsi konversi dan transmisi berikut didukung di legacy 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)
Dalam praktiknya, legacy SQL menafsirkan nilai waktu sipil sebagai bilangan bulat, dan operasi pada bilangan bulat yang menurut Anda merupakan nilai waktu sipil akan memberikan hasil yang tidak terduga.
Untuk menghitung nilai menggunakan jenis data waktu sipil, pertimbangkan GoogleSQL, yang mendukung semua operasi SQL pada jenis data DATE, DATETIME, dan TIME.
Langkah berikutnya
Untuk menetapkan jenis data kolom menggunakan API, lihat schema.fields.type.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Sulit dipahami","hardToUnderstand","thumb-down"],["Informasi atau kode contoh salah","incorrectInformationOrSampleCode","thumb-down"],["Informasi/contoh yang saya butuhkan tidak ada","missingTheInformationSamplesINeed","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-08-17 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)."]]