舊版 SQL 資料類型

這份文件將詳細說明 BigQuery 的舊版 SQL 查詢語法支援的資料類型。建議使用的 BigQuery 查詢語法是標準 SQL。如需標準 SQL 中資料類型的資訊,請參閱標準 SQL 資料類型一文。

舊版 SQL 資料類型

您的資料可以包含下列資料類型:

資料類型 可能的值
STRING 變數長度字元 (UTF-8) 資料。
BYTES 變數長度二進位資料。
  • 匯入的 BYTES 資料必須採用 Base64 編碼,但 Avro BYTES 資料除外,BigQuery 可以讀取及轉換這種資料。
  •             從 BigQuery 資料表讀取的 BYTES 資料採用 base64 編碼,除非您匯出為 Avro 格式,在此情況下,適用於 Avro 位元組資料類型。
INTEGER 64 位元帶正負號整數。
FLOAT 雙精確度浮點數格式。
NUMERIC 舊版 SQL 對於 NUMERIC 的支援有限。詳情請參閱舊版 SQL 中的 NUMERIC
BOOLEAN
  • CSV 格式:10truefalsetfyesnoyn (全部不區分大小寫)。
  • JSON 格式:truefalse (不區分大小寫)。
RECORD 一或多個其他欄位的集合。
TIMESTAMP

您可將 TIMESTAMP 資料類型描述為 UNIX 時間戳記或日曆日期時間。BigQuery 會在內部將 TIMESTAMP 資料儲存為 UNIX 時間戳記,精確度高達毫秒。

UNIX 時間戳記

正或負小數。正數指定了紀元 (1970-01-01 00:00:00 UTC) 後秒數,負數指定了紀元前秒數。最高保留 6 位小數 (精確度達到毫秒)。

日期與時間字串

格式為 YYYY-MM-DD HH:MM:SS 的日期與時間字串。支援 UTCZ 指定碼。

您可在日期與時間字串中提供時區偏移量,但 BigQuery 不在將值轉換為它的內部格式之後保留偏移量。如果您需要保留原始時區資料,請將時區偏移量儲存在另一個資料欄中。當您指定個位數時區偏移量時,開頭必須是零。

使用 JSON 格式時,日期與時間字串都必須加上引號。

範例

以下範例顯示以 UNIX 時間戳記與日期和時間字串格式描述特定日期的相同方法。

事件 UNIX 時間戳記格式 日期/時間字串格式
奧克拉荷馬市附近的輕微 (M4.2) 地震

1408452095.220
1408452095.220000

2014-08-19 07:41:35.220 -05:00
2014-08-19 12:41:35.220 UTC
2014-08-19 12:41:35.220
2014-08-19 12:41:35.220000
2014-08-19T12:41:35.220Z
尼爾‧阿姆斯壯在月球上踏上第一步

-14182916

1969-07-20 20:18:04
1969-07-20 20:18:04 UTC
1969-07-20T20:18:04
修正 Y10k 錯誤的期限

253402300800
2.53402300800e11

10000-01-01 00:00
DATE 舊版 SQL 對於 DATE 的支援有限。詳情請參閱舊版 SQL 中的民用時
TIME 舊版 SQL 對於 TIME 的支援有限。詳情請參閱舊版 SQL 中的民用時
DATETIME 舊版 SQL 對於 DATETIME 的支援有限。詳情請參閱舊版 SQL 中的民用時

舊版 SQL 中的 NUMERIC

您可以讀取 NUMERIC 值,並使用非修改運算子來處理這些值,例如 SELECT list (with aliases)GROUP BY keys 和 analytic 函式中的 pass-through 欄位等等。但是,其他對於 NUMERIC 值的計算 (包括比較在內) 都會產生未定義的結果。

舊版 SQL 支援以下 cast 和 conversion 函數:

  • CAST(<numeric> AS STRING)
  • CAST(<string> AS NUMERIC)

舊版 SQL 中的民用時

您可以讀取民用時資料類型—DATE、TIME 與 DATETIME—並使用例如 analytic 函式中的 SELECT list (with aliases)GROUP BY keys 與通過欄位等的非修改運算子來處理這些資料類型。但是,對於民用時值的其他任何計算 (包括比較在內) 都會產生未定義的結果。

舊版 SQL 支援下列 casts 與 conversion 函式:

  • CAST(<date> AS STRING)
  • CAST(<time> AS STRING)
  • CAST(<datetime> AS STRING)
  • CAST(<string> AS DATE)
  • CAST(<string> AS TIME)
  • CAST(<string> AS DATETIME)

實際上,舊版 SQL 會將民用時值解讀為整數,您以為對整數的運算是民用時值的結果,其實是產生非預期的結果。

如要使用民用時間資料類型計算值,請考慮使用標準 SQL。標準 SQL 支援對於 DATEDATETIMETIME 資料類型的所有 SQL 作業。

後續步驟

  • 如要使用 API 設定欄位的資料類型,請參閱 schema.fields.type 相關說明。
  • 如需標準 SQL 資料類型,請參閱資料類型
本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
需要協助嗎?請前往我們的支援網頁