標準 SQL の時間関数

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 オブジェクトを構築します。タイムゾーンを指定する省略可能なパラメータを使用できます。タイムゾーンが指定されていない場合、デフォルトのタイムゾーンの UTC が使用されます。
  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)

説明

INT64_exprpart 単位を TIME オブジェクトに追加します。

TIME_ADD は、part に対して次の値をサポートしています。

  • MICROSECOND
  • MILLISECOND
  • SECOND
  • MINUTE
  • HOUR

この関数は、値が 00:00:00 から 24:00:00 の外にある場合に自動調整します。たとえば、23:30:00 に 1 時間を追加すると、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 オブジェクトから INT64_exprpart 単位を減算します。

TIME_SUB は、part に対して次の値をサポートしています。

  • MICROSECOND
  • MILLISECOND
  • SECOND
  • MINUTE
  • HOUR

この関数は、値が 00:00:00 から 24:00:00 の外にある場合に自動調整します。たとえば、00:30:00 から 1 時間を減算すると、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)

説明

2 つの TIME オブジェクト間の、全体が指定された part の間隔を示す数を返します。計算によって得られた型がオーバーフローする場合、エラーをスローします。たとえば、2 つの TIME オブジェクト間のマイクロ秒単位の差異が 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)

説明

part の粒度で TIME オブジェクトを切り詰めます。

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 が使用されます。
  • 空白文字。 形式設定文字列内の 1 つ以上の連続する空白文字は、TIME 文字列内のゼロ以上の連続する空白文字と同じです。また、TIME 文字列内の先頭および末尾の空白文字は、それらが形式設定文字列内にない場合でも常に許可されます。
  • 形式設定の優先度。 2 つ以上の形式設定要素に重複する情報がある場合、最後の設定によって前の設定がオーバーライドされます。

戻りデータの型

TIME

SELECT PARSE_TIME("%H", "15") as parsed_time;

+-------------+
| parsed_time |
+-------------+
| 15:00:00    |
+-------------+

TIME に使用できる形式設定要素

特に指定されていない限り、形式設定文字列を使用する TIME 関数は次の要素をサポートします。

形式設定要素 説明
%H 10 進数で表示される時間(24 時間制)(00~23)。
%I 10 進数で表示される時間(12 時間制)(00~12)。
%j 10 進数として表示される、年内の日付(001~366)。
%k 10 進数として表示される時間(24 時間制)(0~23)。1 桁の場合は前にスペースが入れられます。
%l 10 進数として表示される時間(12 時間制)(1~12)。1 桁の場合は前にスペースが入れられます。
%M 10 進数として表示される分(00~59)。
%n 改行文字。
%P am または pm のいずれか。
%p AM または PM のいずれか。
%R %H:%M 形式の時刻。
%r AM/PM 表記を使用する 12 時間制の時刻。
%S 10 進数として表示される分(00~60)。
%T %H:%M:%S 形式の時刻。
%t タブ文字。
%X HH:MM:SS 形式の時刻表記。
%% 単一の % 文字。
%E#S 小数第 # 位の精度で示される秒。
%E*S 完全な小数の精度で示される秒(リテラル '*')。
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。