Simple Log Service は、日時関数、日時抽出関数、時間間隔関数、および時系列補完関数を提供しており、ログに対してフォーマット変換、グループ化、集計などの日時操作を実行できます。このトピックでは、これらの関数の構文と例について説明します。
日時関数
Log Service は、次の日時関数をサポートしています。
-
時間 フォーマット を設定する際は、秒までのみ指定してください。ミリ秒やマイクロ秒は含めないでください。
-
時間文字列の時間部分に対してのみ時間フォーマット (format) を設定する必要があります。タイムゾーンなどの他のコンテンツに対して時間フォーマットを設定する必要はありません。
-
Log Service の各ログには、予約フィールド
__time__が含まれています。 このフィールドの値は、2020-06-17 14:07:47 を表す 1592374067 のような UNIX タイムスタンプです。 -
Log Service の分析文では、文字列はシングルクォーテーション (') で囲む必要があります。 引用符なしの文字や、ダブルクォーテーション (") で囲まれた文字は、フィールド名または列名を表します。 たとえば、
'status'は文字列 status を表しますが、statusまたは"status"はログフィールド status を表します。
|
関数タイプ |
関数名 |
構文 |
説明 |
SQL |
SPL |
|
日時関数 |
current_date |
現在の日付を返します。 |
√ |
× |
|
|
current_time |
現在の時刻とタイムゾーンを返します。 |
√ |
× |
||
|
current_timestamp |
現在の日付、時刻、タイムゾーンを返します。 |
√ |
× |
||
|
current_timezone() |
現在のタイムゾーンを返します。 |
√ |
× |
||
|
date(x) |
日付またはタイムスタンプ式の日付部分を返します。 |
√ |
× |
||
|
date_format(x, format) |
タイムスタンプ式を指定されたフォーマットの文字列に変換します。 |
√ |
√ |
||
|
date_parse(x, format) |
指定されたフォーマットを使用して文字列式をタイムスタンプに解析します。 |
√ |
√ |
||
|
from_iso8601_date(x) |
ISO 8601 形式の日付文字列を日付値に変換します。 |
√ |
× |
||
|
from_iso8601_timestamp(x) |
ISO 8601 形式のタイムスタンプ文字列をタイムスタンプ値に変換します。 |
√ |
× |
||
|
from_unixtime(x) |
UNIX タイムスタンプをタイムゾーン情報のないタイムスタンプ値に変換します。 |
√ |
√ |
||
|
from_unixtime(x, time zone) |
UNIX タイムスタンプを指定されたタイムゾーンのタイムスタンプ値に変換します。 |
√ |
× |
||
|
from_unixtime(x, hours, minutes) |
UNIX タイムスタンプを、hours と minutes で指定されたオフセットを持つタイムスタンプ値に変換します。 |
√ |
× |
||
|
localtime |
ローカルタイムを返します。 |
√ |
× |
||
|
localtimestamp |
ローカルの日付と時刻を返します。 |
√ |
× |
||
|
now() |
現在の日付と時刻を返します。 now 関数は current_timestamp 関数のエイリアスです。 |
√ |
× |
||
|
to_iso8601(x) |
日付またはタイムスタンプ式を ISO 8601 形式の文字列に変換します。 |
√ |
× |
||
|
to_unixtime(x) |
タイムスタンプ式を UNIX タイムスタンプに変換します。 |
√ |
√ |
||
|
current_unixtimestamp() |
システムの現在の UNIX タイムスタンプを返します。 |
× |
√ |
||
|
日時抽出関数 |
day(x) |
日付またはタイムスタンプ式から月の日を抽出します。 day 関数は day_of_month 関数のエイリアスです。 |
√ |
× |
|
|
day_of_month(x) |
日付またはタイムスタンプ式から月の日を抽出します。 day_of_month 関数は day 関数のエイリアスです。 |
√ |
× |
||
|
day_of_week(x) |
日付またはタイムスタンプ式から曜日を抽出します。 day_of_week 関数は dow 関数のエイリアスです。 |
√ |
√ |
||
|
day_of_year(x) |
日付またはタイムスタンプの式から年間通算日を抽出します。 day_of_year 関数は doy 関数のエイリアスです。 |
√ |
√ |
||
|
dow(x) |
日付またはタイムスタンプ式から曜日を抽出します。 dow 関数は day_of_week 関数のエイリアスです。 |
√ |
√ |
||
|
doy(x) |
日付またはタイムスタンプの式から年間通算日を抽出します。 doy 関数は day_of_year 関数のエイリアスです。 |
√ |
√ |
||
|
extract(field from x) |
field で指定された、日付や時刻のコンポーネントなどの部分を日付またはタイムスタンプ式から抽出します。 |
√ |
× |
||
|
hour(x) |
日付またはタイムスタンプ式から時刻 (24 時間形式) を抽出します。 |
√ |
√ |
||
|
minute(x) |
日付またはタイムスタンプ式から時刻の分を抽出します。 |
√ |
√ |
||
|
month(x) |
日付またはタイムスタンプ式から年の中の月を抽出します。 |
√ |
√ |
||
|
quarter(x) |
日付またはタイムスタンプ式から年の四半期を返します。 |
√ |
√ |
||
|
second(x) |
日付またはタイムスタンプ式から秒を抽出します。 |
√ |
√ |
||
|
timezone_hour(x) |
タイムゾーンオフセットの時間コンポーネントを返します。 |
√ |
× |
||
|
timezone_minute(x) |
タイムゾーンオフセットの分コンポーネントを返します。 |
√ |
× |
||
|
week(x) |
日付またはタイムスタンプ式から年の週を返します。 week 関数は week_of_year 関数のエイリアスです。 |
√ |
× |
||
|
week_of_year(x) |
指定された日付の年の週を返します。 week_of_year 関数は week 関数のエイリアスです。 |
√ |
× |
||
|
year(x) |
日付またはタイムスタンプ式から年を抽出します。 |
√ |
√ |
||
|
year_of_week(x) |
日付またはタイムスタンプ式から ISO 週番号の年を抽出します。 year_of_week 関数は yow 関数のエイリアスです。 |
√ |
√ |
||
|
yow(x) |
対象の日付から ISO 週番号の年を抽出します。 yow 関数は year_of_week 関数のエイリアスです。 |
√ |
√ |
||
|
時間間隔関数 |
date_trunc(unit, x) |
日付またはタイムスタンプ式を、ミリ秒、秒、分、時、日、月、年などの指定された単位に切り捨てます。 |
√ |
× |
|
|
date_add(unit, N, x) |
x に N 単位の間隔を追加します。 |
√ |
√ |
||
|
date_diff(unit, x, y) |
2 つのタイムスタンプ式 x と y の差を、指定された単位で返します。 |
√ |
√ |
||
|
時系列補完関数 |
time_series(x, window, format, padding_data) |
クエリのタイムウィンドウ内の欠損データポイントを埋めるために時系列を補完します。 |
√ |
× |
日時関数
current_date
current_date 関数は、YYYY-MM-DD フォーマットで現在の日付を返します。
構文
current_date
戻り値の型
Date 型。
例
昨日のログをクエリします。
-
クエリ・分析文 (デバッグ)
* | SELECT * FROM log WHERE __time__ < to_unixtime(current_date) AND __time__ > to_unixtime(date_add('day', -1, current_date)) -
クエリ・分析結果を以下の表に示します。返されるデータは昨日のログからのもので、body_bytes_sent、client_ip、host、http_user_agent などのフィールドが含まれます。
current_time
current_time 関数は、現在の時刻とタイムゾーンを HH:MM:SS.Ms Time_zone フォーマットで返します。
構文
current_time
戻り値の型
Time 型。
例
現在の時刻とタイムゾーンをクエリします。
-
クエリ・分析文 (デバッグ)
* | select current_time -
クエリ・分析結果:
_col0列は 22:34:24.034 Asia/Shanghai を返します。
current_timestamp
current_timestamp 関数は、現在の日付、時刻、タイムゾーンを YYYY-MM-DD HH:MM:SS.Ms Time_zone フォーマットで返します。
構文
current_timestamp
戻り値の型
Timestamp 型。
例
昨日のログをクエリします。
-
クエリ・分析文 (デバッグ)
* | SELECT * FROM log WHERE __time__ < to_unixtime(current_timestamp) AND __time__ > to_unixtime(date_add('day', -1, current_timestamp)) -
クエリ・分析結果は次の表に示され、body_bytes_sent、client_ip、host、http_user_agent などのフィールドを含む昨日のログデータが含まれます。
current_timezone
current_timezone 関数は、現在のタイムゾーンを返します。
構文
current_timezone()
戻り値の型
Varchar 型。
例
現在のタイムゾーンをクエリします。
-
クエリ・分析文 (デバッグ)
* | select current_timezone() -
クエリ・分析結果:
_col0列は Asia/Shanghai を返します。
date
date 関数は、日時式から日付部分を抽出する関数であり、cast(x as date) と同等です。詳細については、「型変換関数」をご参照ください。
構文
date(x)
パラメーター
|
パラメーター |
説明 |
|
x |
|
戻り値の型
Date 型。
例
この例では、現在のタイムスタンプから日付を抽出します。
-
クエリ・分析文 (デバッグ)
* | SELECT current_timestamp, date(current_timestamp) -
クエリ・分析結果:
_col0列は完全なタイムスタンプを返し、_col1列は 2021-09-07 のような日付部分を返します。
date_format
date_format 関数は、timestamp 式を指定されたフォーマットの文字列に変換します。
構文
date_format(x, format)
パラメーター
|
パラメーター |
説明 |
|
x |
|
|
format |
日時式のターゲットフォーマット。詳細については、「フォーマット指定子」をご参照ください。 |
戻り値の型
Varchar 型。
例
Nginx のリクエスト状態とカウントを計算し、時系列順に表示します。まず date_trunc を使用してログの時間を分単位で揃え、date_format を使用して時間を %H:%i フォーマットに変換し、分ごとの各状態コードのリクエスト数を計算し、クエリと分析結果をストリームグラフとして表示します。
-
クエリ・分析文 (デバッグ)
* | SELECT date_format(date_trunc('minute', __time__), '%H:%i') AS time, COUNT(1) AS count, status GROUP BY time, status ORDER BY time -
クエリ・分析結果

date_parse
date_parse 関数は、指定されたフォーマットの文字列を timestamp 値に変換します。
構文
date_parse(x, format)
パラメーター
|
パラメーター |
説明 |
|
x |
日時文字列。 |
|
format |
入力日時文字列のフォーマット。詳細については、「フォーマット指定子」をご参照ください。 |
戻り値の型
Timestamp 型。
例
StartTime フィールド値と EndTime フィールド値をタイムスタンプ型に変換し、その時間差を計算します。
-
クエリ・分析文
*| SELECT date_parse(StartTime, '%Y-%m-%d %H:%i') AS "StartTime", date_parse(EndTime, '%Y-%m-%d %H:%i') AS "EndTime", date_diff('hour', StartTime, EndTime) AS "Time Difference (hours)" -
クエリ・分析結果:クエリは
StartTimeとして 2021-07-21 20:00:00.000、EndTimeとして 2021-07-21 21:00:00.000、そして時間差として 1 時間を返します。
from_iso8601_date
from_iso8601_date 関数は、ISO 8601 形式の日付文字列を date 値に変換します。
構文
from_iso8601_date(x)
パラメーター
|
パラメーター |
説明 |
|
x |
ISO 8601 形式の日付文字列。 |
戻り値の型
Date 型。
例
time フィールドの値を日付型の日付式に変換します。
-
フィールドサンプル
time:2020-05-03 -
クエリ・分析文
* | select from_iso8601_date(time) -
クエリ・分析結果:
_col0列はdate値である 2020-05-03 を返します。
from_iso8601_timestamp
from_iso8601_timestamp 関数は、ISO 8601 形式のタイムスタンプ文字列を timestamp 値に変換します。
構文
from_iso8601_timestamp(x)
パラメーター
|
パラメーター |
説明 |
|
x |
ISO 8601 形式のタイムスタンプ文字列。 |
戻り値の型
Timestamp 型。
例
この例では、time フィールドを timestamp 値に変換します。
-
フィールドサンプル
time:2020-05-03T17:30:08 -
クエリ・分析文
* | select from_iso8601_timestamp(time) -
クエリ・分析結果:_col0 列の戻り値は 2020-05-03 17:30:08.000 Asia/Shanghai で、タイムゾーン付きのタイムスタンプ型です。
from_unixtime
from_unixtime 関数は、Unix タイムスタンプを timestamp 値に変換します。
構文
-
タイムゾーン情報のないタイムスタンプ値に変換します。
from_unixtime(x) -
タイムゾーン情報のあるタイムスタンプ値に変換します。
from_unixtime(x,time zone) -
タイムゾーン情報のあるタイムスタンプ値に変換します。ここで、hours と minutes はタイムゾーンオフセットを指定します。
from_unixtime(x, hours, minutes)
パラメーター
|
パラメーター |
説明 |
|
x |
UNIX タイムスタンプ。 |
|
time zone |
タイムゾーン。例: |
|
hours |
タイムゾーンオフセットの時間コンポーネント。例: |
|
minutes |
タイムゾーンオフセットの分コンポーネント。例: |
戻り値の型
Timestamp 型。
例
time フィールドの値を、タイムゾーン付きのタイムスタンプ型の日時式に変換します。
-
フィールドサンプル
time:1626774758 -
クエリ・分析文
* | select from_unixtime(time,'Asia/Shanghai') -
クエリ・分析結果:
_col0列は 2021-07-20 17:52:38.000 Asia/Shanghai を返します。
localtime
localtime 関数は、ローカルタイムを HH:MM:SS.Ms フォーマットで返します。
構文
localtime
戻り値の型
Time 型。
例
ローカルタイムをクエリします。
-
クエリ・分析文 (デバッグ)
* | select localtime -
クエリ・分析結果:
_col0列は 02:09:46.213 を返します。
localtimestamp
localtimestamp 関数は、ローカルの日付と時刻を YYYY-MM-DD HH:MM:SS.Ms Time_zone フォーマットで返します。
構文
localtimestamp
戻り値の型
Timestamp 型。
例
昨日のログをクエリします。
-
クエリ・分析文 (デバッグ)
* | SELECT * FROM log WHERE __time__ < to_unixtime(localtimestamp) AND __time__ > to_unixtime(date_add('day', -1, localtimestamp)) -
クエリ・分析結果を以下の表に示します。結果は昨日のログデータで構成され、body_bytes_sent、client_ip、host、http_user_agent などのフィールドが含まれます。
now
now 関数は、現在の日付と時刻を YYYY-MM-DD HH:MM:SS.Ms Time_zone フォーマットで返します。now 関数は current_timestamp 関数のエイリアスです。
構文
now()
戻り値の型
Timestamp 型。
例
昨日のログをクエリします。
-
クエリ・分析文 (デバッグ)
* | SELECT * FROM log WHERE __time__ < to_unixtime(now()) AND __time__ > to_unixtime(date_add('day', -1, now())) -
クエリ・分析結果を以下の表に示します。結果は昨日のログデータであり、body_bytes_sent、client_ip、host、http_user_agent などのフィールドが含まれます。
to_iso8601
to_iso8601 関数は、date または timestamp 式を ISO 8601 形式の文字列に変換します。
構文
to_iso8601(x)
パラメーター
|
パラメーター |
説明 |
|
x |
|
戻り値の型
Varchar 型。
例
この例では、to_iso8601 を使用して current_timestamp からの値を ISO 8601 形式の文字列に変換します。
-
クエリ・分析文 (デバッグ)
* | select to_iso8601(current_timestamp) AS ISO8601 -
クエリ・分析結果:
ISO8601列は 2021-09-02T16:57:56.964+08:00 を返します。
to_unixtime
to_unixtime 関数は、timestamp 式を Unix タイムスタンプに変換します。
構文
to_unixtime(x)
パラメーター
|
パラメーター |
説明 |
|
x |
|
戻り値の型
Double 型。
例
昨日のログをクエリします。
-
クエリ・分析文 (デバッグ)
* | SELECT * FROM log WHERE __time__ < to_unixtime(now()) AND __time__ > to_unixtime(date_add('day', -1, now())) -
クエリ・分析結果を以下の表に示します。クエリは、body_bytes_sent、client_ip、host、http_user_agent などのフィールドを含む昨日のログデータを返しました。
current_unixtimestamp
この関数は、システムの現在の Unix タイムスタンプを返します。Unix タイムスタンプは、1970 年 1 月 1 日 00:00:00 協定世界時 (UTC) から経過した総秒数です。
構文
current_unixtimestamp()
戻り値
-
戻り値の型:
BIGINT -
戻り値の説明: Unix エポックからの秒数を表す整数を返します。
-
精度: デフォルトの精度は秒です。
例
-
例 1:現在のタイムスタンプを取得します。
この基本的な使用法は、データ挿入時間を記録するためによく使用されます。
* | extend now_ts =current_unixtimestamp() -- サンプル出力:1734913028 -
例 2:フォーマット変換
タイムスタンプを人間が判読可能な日付形式に戻すために、
from_unixtimeと共によく使用されます。* | extend readable_time = date_format(from_unixtime(cast(current_unixtimestamp() as double)), '%Y-%m-%d %H:%i:%s') -- サンプル出力:2025-12-23 00:17:08
日時関数
day 関数
day 関数は、日時式から月の日を返し、day_of_month 関数と同等です。
構文
day(x)
パラメーター
|
パラメーター |
説明 |
|
x |
タイムスタンプまたは日付式。 |
戻り値の型
bigint
例
この例では、current_date 関数を使用して現在の日付を取得し、次に day 関数を使用して月の日を返します。
-
クエリ・分析文 (デバッグ)
* | SELECT current_date, day(current_date) -
クエリ・分析結果:_col0 列は現在の日付を返し、_col1 列は 7 を返します。これは月の 7 日目を示します。
day_of_month 関数
day_of_month 関数は、日時式から月の日を返し、day 関数と同等です。
構文
day_of_month(x)
パラメーター
|
パラメーター |
説明 |
|
x |
タイムスタンプまたは日付式。 |
戻り値の型
bigint
例
この例では、current_date 関数を使用して現在の日付を取得し、day_of_month 関数を使用して月の日を返します。
-
クエリ文 (デバッグ)
* | SELECT current_date, day_of_month(current_date) -
クエリ・分析結果:_col0 列は現在の日付を返し、_col1 列は月の日にあたる 7 を返します。
day_of_week 関数
day_of_week 関数は、日付または日時式から曜日を表す整数を返します。
構文
day_of_week(x)
パラメーター
|
パラメーター |
説明 |
|
x |
日時または日付式。 |
戻り値の型
戻り値の型は bigint です。
例
この例では、current_date 関数を使用して現在の日付を取得し、次に day_of_week 関数を使用して曜日を抽出します。
-
クエリ・分析文 (デバッグ)
* | SELECT current_date, day_of_week(current_date) -
クエリ・分析結果:_col0 列は現在の日付を返し、_col1 列は 2 を返します。これは週の 2 日目 (火曜日) を表します。
day_of_year 関数
day_of_year 関数は、日時式から年の日を返します。
構文
day_of_year(x)
パラメーター
|
パラメーター |
説明 |
|
x |
タイムスタンプまたは日付式。 |
戻り値の型
bigint
例
この例では、current_date 関数を使用して現在の日付を取得し、day_of_year 関数を使用して年の日を返します。
-
クエリ文 (デバッグ)
* | SELECT current_date, day_of_year(current_date) -
クエリ・分析結果:_col0 列は現在の日付を返し、_col1 列は 250 を返します。これは、現在の日付が年の 250 日目であることを意味します。
dow 関数
dow 関数は、日時式から曜日を返します。この関数は day_of_week 関数と同等です。
構文
dow(x)
パラメーター
|
パラメーター |
説明 |
|
x |
日時式。 |
戻り値の型
bigint
例
この例では、dow 関数を使用して現在の日付から曜日を抽出します。
-
クエリ・分析文 (デバッグ)
* | SELECT current_date, dow(current_date) -
クエリ・分析結果:_col0 列は現在の日付を返し、_col1 列は 2 を返します。これは週の 2 日目 (火曜日) を表します。
doy 関数
doy 関数は、日時式から年の日を返します。この関数は day_of_year 関数と同等です。
構文
doy(x)
パラメーター
|
パラメーター |
説明 |
|
x |
|
戻り値の型
bigint
例
この例では、current_date 関数を使用して現在の日付を取得し、doy 関数を使用して年の日を返します。
-
クエリ文 (デバッグ)
* | SELECT current_date, doy(current_date) -
クエリ・分析結果:
_col0列は現在の日付を返し、_col1列は 250 を返します。これは、現在の日付が年の 250 日目であることを示します。
Extract 関数
extract 関数は、指定された field に基づいて、年や時などの特定の部分を日付または時刻式から抽出します。
構文
extract(field from x)
パラメーター
|
パラメーター |
説明 |
|
field |
抽出する部分。有効な値には、 |
|
x |
|
戻り値の型
bigint 値を返します。
例
この例では、current_date 関数から返された日付から年を抽出します。
-
クエリ文 (デバッグ)
* | SELECT extract(year from current_date) -
クエリ・分析結果:
_col0列は抽出された年 2021 を返します。
Hour 関数
hour 関数は、日時式から時 (0-23) を抽出します。
構文
hour(x)
パラメーター
|
パラメーター |
説明 |
|
x |
入力は timestamp 型である必要があります。 |
戻り値の型
この関数は bigint 型の値を返します。
例
この例では、current_timestamp 関数を使用して現在のタイムスタンプを取得し、hour 関数を使用して時を抽出します。
-
クエリ文 (デバッグ)
* | SELECT current_timestamp, hour(current_timestamp) -
クエリ・分析結果:_col0 列は現在のタイムスタンプを返し、_col1 列は現在の時 11 を返します。
Minute 関数
minute 関数は、タイムスタンプの分コンポーネント (0 から 59) を返します。
構文
minute(x)
パラメーター
|
パラメーター |
説明 |
|
x |
パラメーターは timestamp 型である必要があります。 |
戻り値の型
bigint 値を返します。
例
この例では、current_timestamp 関数で現在のタイムスタンプを取得し、次に分値を抽出します。
-
クエリ・分析文 (デバッグ)
* | SELECT current_timestamp, minute(current_timestamp) -
クエリ・分析結果:_col0 列には現在のタイムスタンプが含まれ、_col1 列には 17 などの分コンポーネントが含まれます。
Month 関数
month 関数は、日時式から月を抽出します。
構文
month(x)
パラメーター
|
パラメーター |
説明 |
|
x |
日付またはタイムスタンプ式。 |
戻り値の型
bigint
例
この例では、current_timestamp 関数を使用して現在のタイムスタンプを取得し、次に month 関数を使用して月を抽出します。
-
クエリ文 (デバッグ)
* | SELECT current_timestamp, month(current_timestamp) -
クエリ・分析結果:_col0 列は現在のタイムスタンプを返し、_col1 列は現在の月 (9) を返します。
Quarter 関数
quarter 関数は、日付の四半期を返します。
構文
quarter(x)
パラメーター
|
パラメーター |
説明 |
|
x |
日付またはタイムスタンプ式。 |
戻り値の型
bigint
例
この例では、current_timestamp 関数と quarter 関数を使用して、現在の日付の四半期を計算します。
-
クエリ文 (デバッグ)
* | SELECT current_timestamp,quarter(current_timestamp) -
クエリ・分析結果:_col0 列は現在のタイムスタンプを返し、_col1 列は現在の四半期である 3 を返します。
Second 関数
`second` 関数は、タイムスタンプ式の秒コンポーネントを返します。
構文
second(x)
パラメーター
|
パラメーター |
説明 |
|
x |
タイムスタンプ式。 |
戻り値の型
bigint 値。
例
この例では、second 関数を使用して、current_timestamp 関数から返された値から秒を抽出します。
-
クエリ文 (デバッグ)
* | SELECT current_timestamp,second(current_timestamp) -
クエリ・分析結果:_col0 列は現在のタイムスタンプを返し、_col1 列は現在の秒である 41 を返します。
timezone_hour 関数
この関数は、タイムゾーンの時間オフセットを返します。
構文
timezone_hour(x)
パラメーター
|
パラメーター |
説明 |
|
x |
タイムスタンプ式。 |
戻り値の型
bigint 値。
例
この例では、現在の時刻のタイムゾーンの時間オフセットを取得します。
-
クエリ・分析文 (デバッグ)
* | SELECT current_timestamp, timezone_hour(current_timestamp) -
クエリ・分析結果:_col0 列は現在のタイムスタンプを返し、_col1 列はタイムゾーンの時間オフセット (UTC+08:00) である 8 を返します。
Timezone_minute 関数
timezone_minute 関数は、タイムゾーンの分オフセットを計算します。
構文
timezone_minute(x)
パラメーター
|
パラメーター |
説明 |
|
x |
timestamp 型の式。 |
戻り値の型
bigint 型の値。
例
current_timestamp を使用して現在のタイムスタンプを取得し、次に timezone_minute を使用してタイムゾーンの分オフセットを計算します。
-
クエリ・分析文 (デバッグ)
* | SELECT current_timestamp,timezone_minute(current_timestamp) -
クエリ・分析結果:_col0 列は現在のタイムスタンプを返し、_col1 列はタイムゾーンの分オフセットである 0 を返します。
Week 関数
week 関数は、指定された日付の年の週を返し、week_of_year 関数と同等です。
構文
week(x)
パラメーター
|
パラメーター |
説明 |
|
x |
日付またはタイムスタンプ式。 |
戻り値の型
bigint
例
current_timestamp 関数を使用して現在の日付と時刻を取得します。次に、week 関数を使用して現在の年の週を計算します。
-
クエリ文 (デバッグ)
* | SELECT current_timestamp, week(current_timestamp) -
クエリ・分析結果:_col0 列は現在のタイムスタンプを返し、_col1 列は現在の年の週である 36 を返します。
week_of_year 関数
week_of_year 関数は、week 関数のエイリアスであり、日付の年の週を返します。
構文
week_of_year(x)
パラメーター
|
パラメーター |
説明 |
|
x |
パラメーターは date または timestamp 型である必要があります。 |
戻り値の型
bigint
例
この例では、現在のタイムスタンプから年の週を取得します。
-
クエリ・分析文 (デバッグ)
* | SELECT current_timestamp, week_of_year(current_timestamp) -
クエリ・分析結果:_col0 列は現在のタイムスタンプを返し、_col1 列は 36 を返します。これは、現在の日付が年の 36 週目にあることを示します。
Year 関数
year 関数は、日付またはタイムスタンプから年を抽出します。
構文
year(x)
パラメーター
|
パラメーター |
説明 |
|
x |
パラメーターは |
戻り値の型
bigint 値を返します。
例
この例では、current_timestamp 関数を使用して現在の日付と時刻を取得し、year 関数を使用して年を抽出します。
-
クエリ・分析文 (デバッグ)
* | SELECT current_timestamp,year(current_timestamp) -
クエリ・分析結果:
_col0列は現在のタイムスタンプを返し、_col1列は現在の年を返します。
year_of_week 関数
year_of_week 関数は、ISO 週日付システムにおける指定された日付の年を返します。この関数は yow 関数と同等です。
構文
year_of_week(x)
パラメーター
|
パラメーター |
説明 |
|
x |
日付またはタイムスタンプ式。 |
戻り値の型
bigint。
例
この例では、year_of_week 関数と current_timestamp 関数を使用して、ISO 週日付システムにおける現在の日付の年を返します。
-
クエリ・分析文 (デバッグ)
* | SELECT current_timestamp,year_of_week(current_timestamp) -
クエリ・分析結果:_col0 列は現在のタイムスタンプを返し、_col1 列は ISO 週日付システムにおける年、たとえば 2021 を返します。
yow 関数
yow 関数は、ISO 週日付システムに従って日付の年を返します。この関数は year_of_week 関数のエイリアスです。
構文
yow(x)
パラメーター
|
パラメーター |
説明 |
|
x |
評価する値。日付またはタイムスタンプである必要があります。 |
戻り値の型
この関数は bigint 型の値を返します。
例
この例では、current_timestamp 関数を使用して現在の日付と時刻を取得します。次に、yow 関数を使用して ISO 週日付システムに従って年を返します。
-
クエリ文 (デバッグ)
* | SELECT current_timestamp, yow(current_timestamp) -
クエリ・分析結果:_col0 列は現在のタイムスタンプを返し、_col1 列は ISO 週日付システムに基づいた現在の年を返します。
時間間隔関数
date_trunc 関数
date_trunc 関数は、日時式を指定された時間単位に切り捨てます。この関数は、時間ベースの集計と分析によく使用されます。
構文
date_trunc(unit, x)
パラメーター
|
パラメーター |
説明 |
|
unit |
時間単位。有効な値は |
|
x |
日時式。 |
date_trunc 関数は、分単位や時間単位などの固定された時間間隔でのみデータを集計します。5 分ごとなどの柔軟な時間ディメンションでデータをグループ化するには、モジュロ演算子を使用します。
* | SELECT count(1) AS pv, __time__ - __time__ %300 AS time GROUP BY time LIMIT 100
戻り値の型
戻り値の型は、x パラメーターの型と同じです。
例
分ごとの平均リクエスト時間を計算し、結果を時間でグループ化してソートします。
-
クエリ・分析文 (デバッグ)
* | SELECT date_trunc('minute', __time__) AS time, truncate (avg(request_time)) AS avg_time, current_date AS date GROUP BY time ORDER BY time DESC LIMIT 100 -
クエリ・分析結果には、time 列 (分単位で整列)、avg_time 列 (平均リクエスト時間)、および date 列 (現在の日付) が含まれます。
date_add 関数
date_add 関数は、日付または時刻の値に指定された時間間隔を加算または減算します。
構文
date_add(unit, n, x)
パラメーター
|
パラメーター |
説明 |
|
unit |
時間単位。有効な値は |
|
n |
加算する時間間隔。負の値は間隔を減算します。 |
|
x |
|
戻り値の型
timestamp 値。
例
昨日のログをクエリします。
-
クエリ・分析文 (デバッグ)
* | SELECT * FROM log WHERE __time__ < to_unixtime(current_timestamp) AND __time__ > to_unixtime(date_add('day', -1, current_timestamp)) -
クエリ・分析結果には、body_bytes_sent、client_ip、host、http_user_agent などのフィールドを含む昨日のログデータが含まれます。
date_diff 関数
date_diff 関数は、2 つの日付または時刻式の差を返します。
構文
date_diff(unit, x, y)
パラメーター
|
パラメーター |
説明 |
|
unit |
時間単位。有効な値は |
|
x |
|
|
y |
|
戻り値の型
bigint 値。
例
UsageStartTime フィールドと UsageEndTime フィールドに基づいて、サーバーの使用期間を計算します。
-
クエリ・分析文
* | SELECT date_diff('hour', UsageStartTime, UsageEndTime) AS "時間差(時間)" -
クエリは 24 時間の時間差を返します。
時系列補完関数
time_series 関数
time_series 関数は、クエリのタイムウィンドウ内の欠損データポイントを補完します。
time_series 関数は GROUP BY 句および ORDER BY 句と一緒に使用する必要があります。ORDER BY 句は降順 (DESC) をサポートしていません。この関数がサブクエリで使用される場合、外部クエリには GROUP BY または ORDER BY 句を含めることはできません。
構文
time_series(x, window_time, format, padding_data)
パラメーター
|
パラメーター |
説明 |
|
x |
|
|
window_time |
ウィンドウサイズ。単位は |
|
format |
結果の時間フォーマット。詳細については、「フォーマット仕様」をご参照ください。 |
|
padding_data |
欠損値をどのように補完するかを指定します。有効な値は次のとおりです:
|
戻り値の型
varchar 型の値。
例
2 時間の時間粒度でデータを補完し、欠損値を 0 で埋めます。
-
クエリ・分析文 (デバッグ)
* | select * from (select time_series(__time__, '2h', '%Y-%m-%d %H:%i:%s', '0') as time, count(*) as num from log group by time order by time) a limit 100 -
次の表は、クエリ・分析結果を示しています。クエリは、2 時間の時間粒度での time 列と、対応する num 列を返します。
フォーマット指定子
|
フォーマット |
説明 |
|
%a |
曜日の省略名。例: |
|
%b |
月の省略名。例: |
|
%c |
月、10 進数として。範囲:1 から 12。 |
|
%D |
英語の序数接尾辞付きの月の日。例: |
|
%d |
月の日、ゼロ埋めされた 10 進数として。範囲:01 から 31。 |
|
%e |
月の日、10 進数として。範囲:1 から 31。 |
|
%H |
時 (24 時間時計)、ゼロ埋めされた 10 進数として。範囲:00 から 23。 |
|
%h |
時 (12 時間時計)、ゼロ埋めされた 10 進数として。範囲:01 から 12。 |
|
%i |
分、ゼロ埋めされた 10 進数として。範囲:00 から 59。 |
|
%j |
年の日、ゼロ埋めされた 10 進数として。範囲:001 から 366。 |
|
%k |
時 (24 時間時計)、10 進数として。範囲:0 から 23。 |
|
%l |
時 (12 時間時計)、10 進数として。範囲:1 から 12。 |
|
%M |
月の完全名。例: |
|
%m |
月、ゼロ埋めされた 10 進数として。範囲:01 から 12。 |
|
%p |
|
|
%r |
12 時間フォーマットの時間 ( |
|
%S |
秒、ゼロ埋めされた 10 進数として。範囲:00 から 59。 |
|
%s |
UNIX エポックからの秒数。 |
|
%f |
マイクロ秒、ゼロ埋めされた 10 進数として。範囲:000000 から 999999。 |
|
%T |
24時間フォーマット ( |
|
%v |
年の週番号 (01-53)、月曜日を週の初日とします。 |
|
%W |
曜日の完全名。例: |
|
%Y |
4 桁の年。例: |
|
%y |
2 桁の年。例: |
|
%% |
リテラルの |
単位
|
単位 |
説明 |
|
millisecond |
ミリ秒 |
|
second |
第2 |
|
minute |
分 |
|
hour |
時 |
|
day |
日 |
|
week |
週 |
|
month |
月 |
|
quarter |
四半期 |
|
year |
年 |