舊版 SQL 資料類型
這份文件將詳細說明 BigQuery 的舊版 SQL 查詢語法支援的資料類型。建議使用的 BigQuery 查詢語法是 GoogleSQL。如要瞭解 GoogleSQL 中的資料類型,請參閱 GoogleSQL 資料類型。
舊版 SQL 資料類型
您的資料可以包含下列資料類型:
資料類型 | 可能的值 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
STRING | 變數長度字元 (UTF-8) 資料。 | ||||||||||||
BYTES |
變數長度二進位資料。
|
||||||||||||
INTEGER |
64 位元帶正負號整數。 如果您使用 BigQuery API 將不在 [-253+1, 253-1] 範圍內的整數 (在大多數情況下,這表示大於 9,007,199,254,740,991) 載入至整數 (INT64) 資料欄,則必須以字串形式傳遞,以免資料毀損。這個問題是由於 JSON/ECMAScript 中的整數大小有限制。詳情請參閱 RFC 7159 的「Numbers」一節。 |
||||||||||||
FLOAT | 雙精確度浮點數格式。 | ||||||||||||
NUMERIC | 舊版 SQL 僅支援部分 NUMERIC 功能。詳情請參閱「舊版 SQL 中的確切數值」。 | ||||||||||||
BIGNUMERIC | 舊版 SQL 僅支援 BIGNUMERIC 的部分功能。詳情請參閱「舊版 SQL 中的確切數值」。 | ||||||||||||
BOOLEAN |
|
||||||||||||
RECORD | 一或多個其他欄位的集合。 | ||||||||||||
TIMESTAMP |
您可將 TIMESTAMP 資料類型描述為 UNIX 時間戳記或日曆日期時間。BigQuery 會在內部將 TIMESTAMP 資料儲存為 UNIX 時間戳記,精確度高達毫秒。 UNIX 時間戳記 正或負小數。正數指定了紀元 (1970-01-01 00:00:00 UTC) 後秒數,負數指定了紀元前秒數。最高保留 6 位小數 (精確度達到毫秒)。 日期和時間字串 日期和時間字串,格式為 您可在日期與時間字串中提供時區偏移量,但 BigQuery 不在將值轉換為它的內部格式之後保留偏移量。如果您需要保留原始時區資料,請將時區偏移量儲存在另一個資料欄中。當您指定個位數時區偏移量時,開頭必須是零。 使用 JSON 格式時,日期與時間字串都必須加上引號。 範例 以下範例顯示以 UNIX 時間戳記與日期和時間字串格式描述特定日期的相同方法。
|
||||||||||||
DATE | 舊版 SQL 對於 DATE 的支援有限。詳情請參閱舊版 SQL 中的民用時。 | ||||||||||||
時間 | 舊版 SQL 對於 TIME 的支援有限。詳情請參閱舊版 SQL 中的民用時。 | ||||||||||||
DATETIME | 舊版 SQL 對於 DATETIME 的支援有限。詳情請參閱舊版 SQL 中的民用時。 |
舊版 SQL 中的精確數值
您可以在 SELECT list (with aliases)
、GROUP BY keys
和視窗函式中的傳遞欄位等非修改子句中讀取 NUMERIC 或 BIGNUMERIC 值。不過,任何涉及 NUMERIC 或 BIGNUMERIC 值的運算 (包括比較) 都會產生未定義的結果。
舊版 SQL 支援以下 cast 和 conversion 函數:
CAST(<numeric> AS STRING)
CAST(<bignumeric> AS STRING)
CAST(<string> AS NUMERIC)
CAST(<string> AS BIGNUMERIC)
舊版 SQL 中的民用時
您可以讀取民用時間資料類型 (DATE、TIME 和 DATETIME),並使用 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 會將民用時值解讀為整數,您以為對整數的運算是民用時值的結果,其實是產生非預期的結果。
如要使用民用時間資料類型計算值,請考慮使用 GoogleSQL。GoogleSQL 支援對 DATE、DATETIME 和 TIME 資料類型的所有 SQL 作業。
後續步驟
- 如要使用 API 設定欄位的資料類型,請參閱
schema.fields.type
。 - 如需 GoogleSQL 資料類型,請參閱「資料類型」。