標準 SQL 中的 Time 函式

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)

說明

  1. 使用表示時、分與秒的 INT64 值建構 TIME 物件。
  2. 使用 TIMESTAMP 物件建構 TIME 物件。它支援指定時區的選用參數。如果沒有指定時區,就會使用預設時區 (世界標準時間)。
  3. 使用 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)

說明

將 partINT64_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 物件減去 partINT64_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 帶有完整分數精確度 (常值「*」) 的秒。
本頁內容對您是否有任何幫助?請提供意見:

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

這個網頁