BigQuery 支援下列 TIME
函式。
CURRENT_TIME
CURRENT_TIME()
說明
將目前時間傳回為 TIME 物件。
傳回資料類型
TIME
範例
SELECT CURRENT_TIME() as now;
+----------------------------+
| now |
+----------------------------+
| 15:31:38.776361 |
+----------------------------+
TIME
1. TIME(hour, minute, second)
2. TIME(timestamp, [timezone])
3. TIME(datetime)
說明
- 使用表示時、分與秒的
INT64
值建構TIME
物件。 - 使用
TIMESTAMP
物件建構TIME
物件。它支援指定時區的選用參數。如果沒有指定時區,就會使用預設時區 (世界標準時間)。 - 使用
DATETIME
物件建構TIME
物件。
傳回資料類型
TIME
範例
SELECT
TIME(15, 30, 00) as time_hms,
TIME(TIMESTAMP "2008-12-25 15:30:00+08", "America/Los_Angeles") as time_tstz;
+----------+-----------+
| time_hms | time_tstz |
+----------+-----------+
| 15:30:00 | 23:30:00 |
+----------+-----------+
SELECT
TIME(DATETIME "2008-12-25 15:30:00.000000") AS time_dt;
+----------+
| time_dt |
+----------+
| 15:30:00 |
+----------+
TIME_ADD
TIME_ADD(time_expression, INTERVAL INT64_expr part)
說明
將 part
的 INT64_expr
單位加到 TIME 物件中。
TIME_ADD
支援 part
的下列值:
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
這個函式會在值超出 00:00:00 到 24:00:00 的邊界之外時自動調整。例如,如果您將一小時加到 23:30:00
,傳回的值就是 00:30:00
。
傳回資料類型
TIME
範例
SELECT
TIME "15:30:00" as original_time,
TIME_ADD(TIME "15:30:00", INTERVAL 10 MINUTE) as later;
+-----------------------------+------------------------+
| original_time | later |
+-----------------------------+------------------------+
| 15:30:00 | 15:40:00 |
+-----------------------------+------------------------+
TIME_SUB
TIME_SUB(time_expression, INTERVAL INT_expr part)
說明
從 TIME 物件減去 part
的 INT64_expr
單位。
TIME_SUB
支援 part
的下列值:
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
這個函式會在值超出 00:00:00 到 24:00:00 的邊界之外時自動調整。例如,如果您從 00:30:00
減去一小時,傳回的值就是 23:30:00
。
傳回資料類型
TIME
範例
SELECT
TIME "15:30:00" as original_date,
TIME_SUB(TIME "15:30:00", INTERVAL 10 MINUTE) as earlier;
+-----------------------------+------------------------+
| original_date | earlier |
+-----------------------------+------------------------+
| 15:30:00 | 15:20:00 |
+-----------------------------+------------------------+
TIME_DIFF
TIME_DIFF(time_expression, time_expression, part)
說明
傳回兩個 TIME 物件之間的完整指定 part
間隔數。如果計算溢位結果類型就會擲回錯誤,例如兩個時間物件之間的毫秒差異就會使 INT64 值溢位。
TIME_DIFF
支援 part
的下列值:
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
傳回資料類型
INT64
範例
SELECT
TIME "15:30:00" as first_time,
TIME "14:35:00" as second_time,
TIME_DIFF(TIME "15:30:00", TIME "14:35:00", MINUTE) as difference;
+----------------------------+------------------------+------------------------+
| first_time | second_time | difference |
+----------------------------+------------------------+------------------------+
| 15:30:00 | 14:35:00 | 55 |
+----------------------------+------------------------+------------------------+
TIME_TRUNC
TIME_TRUNC(time_expression, part)
說明
將 TIME 物件截斷至 part
的精細程度。
TIME_TRUNC
支援 part
的下列值:
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
傳回資料類型
TIME
範例
SELECT
TIME "15:30:00" as original,
TIME_TRUNC(TIME "15:30:00", HOUR) as truncated;
+----------------------------+------------------------+
| original | truncated |
+----------------------------+------------------------+
| 15:30:00 | 15:00:00 |
+----------------------------+------------------------+
FORMAT_TIME
FORMAT_TIME(format_string, time_object)
說明
根據指定的 format_string
格式化 TIME 物件。如需這個函式支援的格式元素清單,請參閱 TIME 的支援格式元素。
傳回資料類型
STRING
範例
SELECT FORMAT_TIME("%R", TIME "15:30:00") as formatted_time;
+----------------+
| formatted_time |
+----------------+
| 15:30 |
+----------------+
PARSE_TIME
PARSE_TIME(format_string, string)
說明
使用 format_string
與字串傳回 TIME 物件。如需這個函式支援的格式元素清單,請參閱 TIME 的支援格式元素。
使用 PARSE_TIME
時,請注意下列幾點:
- 未指定的欄位。 任何未指定的欄位都從
00:00:00.0
開始。例如,若未指定seconds
,它的預設就是00
,依此類推。 - 空格字元。 格式字串中的一或多個連續空格字元都符合 TIME 字串中的零或多個連續空格字元。此外,一律允許 TIME 字串中的前置與尾隨空格字元—即使它們不在格式字串中也一樣。
- 格式優先順序。 當二 (或多) 個格式元素具有重疊資訊時,最後一個格式元素一般會覆寫任何之前的格式元素。
傳回資料類型
TIME
範例
SELECT PARSE_TIME("%H", "15") as parsed_time;
+-------------+
| parsed_time |
+-------------+
| 15:00:00 |
+-------------+
TIME 的支援格式元素
除非另外提及,否則使用格式字串的 TIME 函式都支援下列元素:
格式元素 | 說明 |
%H | 以十進位數字 (00-23) 表示的小時 (24 小時制)。 |
%I | 以十進位數字 (01-12) 表示的小時 (12 小時制)。 |
%j | 以十進位數字 (001-366) 表示的每年日期。 |
%k | 以十進位數字 (0-23) 表示的小時 (24 小時制);單一數字前面會加上空格。 |
%l | 以十進位數字 (1-12) 表示的小時 (12 小時制);單一數字前面會加上空格。 |
%M | 以十進位數字 (00-59) 表示的分鐘。 |
%n | 換行字元。 |
%P | am 或 pm。 |
%p | AM 或 PM。 |
%R | %H:%M 格式的時間。 |
%r | 使用 AM/PM 標記法的 12 小時制時間。 |
%S | 以十進位數字 (00-60) 表示的秒。 |
%T | %H:%M:%S 格式的時間。 |
%t | 定位字元。 |
%X | HH:MM:SS 格式的時間表示。 |
%% | 單一 % 字元。 |
%E#S | 帶有分數精確度位數的秒。 |
%E*S | 帶有完整分數精確度 (常值「*」) 的秒。 |