Simple Log Service では、さまざまな種類の日付と時刻の関数を使用してログデータを処理できます。関数には、時間関数、日付関数、日付と時刻の抽出関数、時間間隔関数、および時系列パディング関数が含まれます。これらの関数を使用して、ログの日付と時刻の形式を変換できます。また、これらの関数を使用して、ログをグループ化および集計することもできます。このトピックでは、日付と時刻の関数の構文について説明します。また、関数の使用方法の例も示します。
日付と時刻関数の概要
次の表に、Simple Log Service でサポートされている日付と時刻の関数を示します。
Simple Log Service のログのタイムスタンプは秒単位まで正確です。したがって、時間形式は秒単位までしか指定できません。詳細については、「形式」をご参照ください。
時間文字列の時間に対してのみ時間形式を指定する必要があります。タイムゾーンなどの他のパラメーターには、時間形式を指定する必要はありません。詳細については、「形式」をご参照ください。
Simple Log Service の各ログには、予約済みの
__time__
フィールドが含まれています。フィールドの値は UNIX タイムスタンプです。例:1592374067 は 2020-06-17 14:07:47 を示します。分析文で文字列を使用する場合は、文字列を一重引用符 ('') で囲む必要があります。囲まれていない文字列、または二重引用符 ("") で囲まれた文字列は、フィールド名または列名を示します。たとえば、
'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() | 現在の日付と時刻を返します。 この関数は current_timestamp 関数と同じです。 | √ | × | ||
to_iso8601(x) | 日付またはタイムスタンプ値を返すことができる日時式を、ISO 8601 形式の日時式に変換します。 | √ | × | ||
to_unixtime(x) | タイムスタンプ値を返すことができる日時式を UNIX タイムスタンプに変換します。 | √ | √ | ||
日付と時刻の抽出関数 | day(x) | 日時式から、月の何日目かを返します。 この関数は day_of_month 関数と同じです。 | √ | × | |
day_of_month(x) | 日時式から、月の何日目かを返します。 この関数は day 関数と同じです。 | √ | × | ||
day_of_week(x) | 日時式から、曜日を返します。 この関数は dow 関数と同じです。 | √ | √ | ||
day_of_year(x) | 日時式から年の何日目かを返します。 この関数は doy 関数と同じです。 | √ | √ | ||
dow(x) | 日時式から、曜日を返します。 この関数は day_of_week 関数と同じです。 | √ | √ | ||
doy(x) | 日時式から年の何日目かを返します。 この関数は day_of_year 関数と同じです。 | √ | √ | ||
extract(field from x) | 日時式から指定された field を返します。フィールドは日付または時刻です。 | √ | × | ||
hour(x) | 日時式から、1 日のうちの時間を返します。24 時間制が使用されます。 | √ | √ | ||
minute(x) | 日時式から、時間の中の分を返します。 | √ | √ | ||
month(x) | 日時式から年の何月かを返します。 | √ | √ | ||
quarter(x) | 指定した日付が属する四半期を返します。 | √ | √ | ||
second(x) | 日時式から分の中の秒を返します。 | √ | √ | ||
timezone_hour(x) | タイムゾーンのオフセットを時間単位で返します。 | √ | × | ||
timezone_minute(x) | タイムゾーンのオフセットを分単位で返します。 | √ | × | ||
week(x) | 指定した日付が属する、年の週番号を返します。 この関数は week_of_year 関数と同じです。 | √ | × | ||
week_of_year(x) | 指定した日付が属する、年の週番号を返します。 この関数は week 関数と同じです。 | √ | × | ||
year(x) | 指定した日付の年を返します。 | √ | √ | ||
year_of_week(x) | ISO 週日付システムで、指定した日付が属する年を返します。 この関数は yow 関数と同じです。 | √ | √ | ||
yow(x) | ISO 週日付システムで、指定した日付が属する年を返します。 この関数は 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))
クエリと分析結果
current_time 関数
current_time 関数は現在の時刻とタイムゾーンを返します。戻り値は HH:MM:SS.Ms Time_zone 形式です。
構文
current_time
戻り値の型
time 型。
例
現在の時刻とタイムゾーンをクエリします。
クエリステートメント(デバッグ)
* | select current_time
クエリと分析結果
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))
クエリと分析結果
current_timezone 関数
current_timezone 関数は現在のタイムゾーンを返します。
構文
current_timezone()
戻り値の型
varchar 型。
例
現在のタイムゾーンをクエリします。
クエリステートメント(デバッグ)
* | select current_timezone()
クエリと分析結果
date 関数
date 関数は、日時式の日付部分を返します。この関数は cast(x as date)
関数と同じです。詳細については、「データ型変換関数」をご参照ください。
構文
date(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は、date 型または timestamp 型です。 |
戻り値の型
date 型。
例
current_timestamp 関数を使用して現在の日付と時刻を取得します。次に、date 関数を使用して現在の日付と時刻の日付部分を取得します。
クエリステートメント(デバッグ)
* | SELECT current_timestamp, date(current_timestamp)
クエリと分析結果
date_format 関数
date_format 関数は、タイムスタンプ値を返すことができる日時式を、指定された形式の日時式に変換します。
構文
date_format(x, format)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は、タイムスタンプ値を返すことができる日時式です。 |
format | タイムスタンプ値を返すことができる日時式を変換する日時式の形式。詳細については、「形式」をご参照ください。 |
戻り値の型
varchar 型。
例
NGINX リクエストのステータスをクエリし、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 関数は、日時文字列を、タイムスタンプ値を返すことができ、指定された形式である日時式に変換します。
構文
date_parse(x, format)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は日時文字列です。 |
format | 日時文字列を変換する、タイムスタンプ値を返すことができる日時式の形式。詳細については、「形式」をご参照ください。 |
戻り値の型
timestamp 型。
例
StartTime
フィールドと EndTime
フィールドの値を、タイムスタンプ値を返すことができる日時式に変換し、2 つの日時式の差を計算します。
クエリステートメント
*| 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 (hour)"
クエリと分析結果
from_iso8601_date 関数
from_iso8601_date 関数は、ISO 8601 形式の日付式を、日付値を返すことができる日付式に変換します。戻り値は YYYY-MM-DD 形式です。
構文
from_iso8601_date(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は、ISO 8601 形式の日付式です。 |
戻り値の型
date 型。
例
time
フィールドの値を、日付値を返すことができる日付式に変換します。
サンプルフィールド
time:2020-05-03
クエリステートメント
* | select from_iso8601_date(time)
クエリと分析結果
from_iso8601_timestamp 関数
from_iso8601_timestamp 関数は、ISO 8601 形式の日時式を、タイムスタンプ値を返すことができる日時式に変換します。戻り値は YYYY-MM-DD HH:MM:SS.Ms Time_zone 形式です。
構文
from_iso8601_timestamp(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は、ISO 8601 形式の日時式です。 |
戻り値の型
timestamp 型。
例
time フィールドの値を、タイムスタンプ値を返すことができる日時式に変換します。
サンプルフィールド
time:2020-05-03T17:30:08
クエリステートメント
* | select from_iso8601_timestamp(time)
クエリと分析結果
from_unixtime 関数
from_unixtime 関数は UNIX タイムスタンプを、タイムスタンプ値を返すことができる日時式に変換します。戻り値は YYYY-MM-DD HH:MM:SS.Ms または YYYY-MM-DD HH:MM:SS.Ms Time_zone 形式です。
構文
次の構文を使用すると、関数は UNIX タイムスタンプを、タイムスタンプ値を返すことができ、タイムゾーンを含まない日時式に変換します。
from_unixtime(x)
次の構文を使用すると、関数は UNIX タイムスタンプを、タイムスタンプ値を返すことができ、タイムゾーンを含む日時式に変換します。
from_unixtime(x,time zone)
次の構文を使用すると、関数は UNIX タイムスタンプを、タイムスタンプ値を返すことができ、タイムゾーンを含む日時式に変換します。日時式では、hours と minutes の値はタイムゾーンのオフセットを示します。
from_unixtime(x, hours, minutes)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は UNIX タイムスタンプです。 |
time zone | タイムゾーン。例:Asia/shanghai。 |
hours | タイムゾーンのオフセット(時間単位)。例:+07、-09。 |
minutes | タイムゾーンのオフセット(分単位)。例:+30、-45。 |
戻り値の型
timestamp 型。
例
time
フィールドの値を、タイムスタンプ値を返すことができ、タイムゾーンを含む日時式に変換します。
サンプルフィールド
time:1626774758
クエリステートメント
* | select from_unixtime(time,'Asia/shanghai')
クエリと分析結果
localtime 関数
localtime 関数はローカル時間を返します。戻り値は HH:MM:SS.Ms 形式です。
構文
localtime
戻り値の型
time 型。
例
ローカル時間をクエリします。
クエリステートメント(デバッグ)
* | select localtime
クエリと分析結果
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))
クエリと分析結果
now 関数
now 関数は現在の日付と時刻を返します。戻り値は YYYY-MM-DD HH:MM:SS.Ms Time_zone 形式です。この関数は current_timestamp 関数と同じです。
構文
now()
戻り値の型
timestamp 型。
例
前日のログをクエリします。
クエリステートメント(デバッグ)
* | SELECT * FROM log WHERE __time__ < to_unixtime(now()) AND __time__ > to_unixtime(date_add('day', -1, now()))
クエリと分析結果
to_iso8601 関数
to_iso8601 関数は、日付またはタイムスタンプ値を返すことができる日時式を ISO 8601 形式の日時式に変換します。
構文
to_iso8601(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は date 型または timestamp 型です。 |
戻り値の型
varchar 型。
例
current_timestamp 関数を使用して現在の日付と時刻を取得します。次に、to_iso8601 関数を使用して現在の日付と時刻を ISO 8601 形式に変換します。
クエリステートメント(デバッグ)
* | select to_iso8601(current_timestamp) AS ISO8601
クエリと分析結果
to_unixtime 関数
to_unixtime 関数は、タイムスタンプ値を返すことができる日時式を UNIX タイムスタンプに変換します。
構文
to_unixtime(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は、タイムスタンプ値を返すことができる日時式です。 |
戻り値の型
double 型。
例
前日のログをクエリします。
クエリステートメント(デバッグ)
* | SELECT * FROM log WHERE __time__ < to_unixtime(now()) AND __time__ > to_unixtime(date_add('day', -1, now()))
クエリと分析結果
day 関数
day 関数は、日時式から月の何日目かを返します。この関数は day_of_month 関数と同じです。
構文
day(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は timestamp 型または date 型です。 |
戻り値の型
bigint 型。
例
current_date 関数を使用して現在の日付を取得します。次に、day 関数を使用して現在の日付に基づいて月の何日目かを返します。
クエリステートメント(デバッグ)
* | SELECT current_date, day(current_date)
クエリと分析結果
day_of_month 関数
day_of_month 関数は、日時式から月の何日目かを返します。この関数は day 関数と同じです。
構文
day_of_month(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は timestamp 型または date 型です。 |
戻り値の型
bigint 型。
例
current_date 関数を使用して現在の日付を取得します。次に、day_of_month 関数を使用して現在の日付に基づいて月の何日目かを返します。
クエリステートメント(デバッグ)
* | SELECT current_date, day_of_month(current_date)
クエリと分析結果
day_of_week 関数
day_of_week 関数は、日時式から曜日を返します。
構文
day_of_week(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は timestamp 型または date 型です。 |
戻り値の型
bigint 型。
例
current_date 関数を使用して現在の日付を取得します。次に、day_of_week 関数を使用して現在の日付に基づいて曜日を取得します。
クエリステートメント(デバッグ)
* | SELECT current_date, day_of_week(current_date)
クエリと分析結果
day_of_year 関数
day_of_year 関数は、日時式から年の何日目かを返します。
構文
day_of_year(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は timestamp 型または date 型です。 |
戻り値の型
bigint 型。
例
current_date 関数を使用して現在の日付を取得します。次に、day_of_year 関数を使用して現在の日付に基づいて年の何日目かを返します。
クエリステートメント(デバッグ)
* | SELECT current_date, day_of_year(current_date)
クエリと分析結果
dow 関数
dow 関数は、日時式から曜日を返します。この関数は day_of_week 関数と同じです。
構文
dow(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は timestamp 型または date 型です。 |
戻り値の型
bigint 型。
例
current_date 関数を使用して現在の日付を取得します。次に、dow 関数を使用して現在の日付に基づいて曜日を取得します。
クエリステートメント(デバッグ)
* | SELECT current_date, dow(current_date)
クエリと分析結果
doy 関数
doy 関数は、日時式から年の何日目かを返します。この関数は day_of_year 関数と同じです。
構文
doy(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は timestamp 型または date 型です。 |
戻り値の型
bigint 型。
例
current_date 関数を使用して現在の日付を取得します。次に、doy 関数を使用して現在の日付に基づいて年の何日目かを返します。
クエリステートメント(デバッグ)
* | SELECT current_date, doy(current_date)
クエリと分析結果
extract 関数
extract 関数は、日時式から指定された field を返します。フィールドは日付または時刻です。
構文
extract(field from x)
パラメーター
パラメーター | 説明 |
field | 有効な値:year、quarter、month、week、day、day_of_month、day_of_week、dow、day_of_year、doy、year_of_week、yow、hour、minute、second、timezone_hour、timezone_minute。 |
x | このパラメーターの値は、date、time、timestamp、または interval(実際には varchar(9))型です。 |
戻り値の型
bigint 型。
例
current_date 関数を使用して現在の日付を取得します。次に、extract 関数を使用して現在の日付の年を取得します。
クエリステートメント(デバッグ)
* | SELECT extract(year from current_date)
クエリと分析結果
hour 関数
hour 関数は日時式から、1 日のうちの時間を返します。24 時間制が使用されます。
構文
hour(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は timestamp 型です。 |
戻り値の型
bigint 型。
例
current_timestamp 関数を使用して現在の日付と時刻を取得します。次に、hour 関数を使用して現在の時刻に基づいて時間数を取得します。
クエリステートメント(デバッグ)
* | SELECT current_timestamp, hour(current_timestamp)
クエリと分析結果
minute 関数
minute 関数は、日時式から時間の中の分を返します。
構文
minute(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は timestamp 型です。 |
戻り値の型
bigint 型。
例
current_timestamp 関数を使用して現在の日付と時刻を取得します。次に、minute 関数を使用して現在の時刻に基づいて分数を取得します。
クエリステートメント(デバッグ)
* | SELECT current_timestamp, minute(current_timestamp)
クエリと分析結果
month 関数
month 関数は日時式から年の何月かを返します。
構文
month(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は date 型または timestamp 型です。 |
戻り値の型
bigint 型。
例
current_timestamp 関数を使用して現在の日付と時刻を取得します。次に、month 関数を使用して現在の日付に基づいて月を取得します。
クエリステートメント(デバッグ)
* | SELECT current_timestamp, month(current_timestamp)
クエリと分析結果
quarter 関数
quarter 関数は指定した日付が属する四半期を返します。
構文
quarter(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は date 型または timestamp 型です。 |
戻り値の型
bigint 型。
例
current_timestamp 関数を使用して現在の日付と時刻を取得します。次に、quarter 関数を使用して現在の日付が属する四半期を取得します。
クエリステートメント(デバッグ)
* | SELECT current_timestamp,quarter(current_timestamp)
クエリと分析結果
second 関数
second 関数は日時式から分の中の秒を返します。
構文
second(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は timestamp 型です。 |
戻り値の型
bigint 型。
例
current_timestamp 関数を使用して現在の日付と時刻を取得します。次に、second 関数を使用して現在の時刻に基づいて秒数を取得します。
クエリステートメント(デバッグ)
* | SELECT current_timestamp,second(current_timestamp)
クエリと分析結果
timezone_hour 関数
timezone_hour 関数はタイムゾーンのオフセットを時間単位で返します。
構文
timezone_hour(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は timestamp 型です。 |
戻り値の型
bigint 型。
例
current_timestamp 関数を使用して現在の日付と時刻を取得します。次に、timezone_hour 関数を使用して現在の時刻が属するタイムゾーンのオフセットを時間単位で取得します。
クエリステートメント(デバッグ)
* | SELECT current_timestamp, timezone_hour(current_timestamp)
クエリと分析結果
timezone_minute 関数
timezone_minute 関数はタイムゾーンのオフセットを分単位で返します。
構文
timezone_minute(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は timestamp 型です。 |
戻り値の型
bigint 型。
例
current_timestamp 関数を使用して現在の日付と時刻を取得します。次に、timezone_minute 関数を使用して現在の時刻が属するタイムゾーンのオフセットを分単位で取得します。
クエリステートメント(デバッグ)
* | SELECT current_timestamp,timezone_minute(current_timestamp)
クエリと分析結果
week 関数
week 関数は、指定した日付が属する年の週番号を返します。この関数は week_of_year 関数と同じです。
構文
week(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は date 型または timestamp 型です。 |
戻り値の型
bigint 型。
例
current_timestamp 関数を使用して現在の日付と時刻を取得します。次に、week 関数を使用して現在の日付が属する年の週番号を取得します。
クエリステートメント(デバッグ)
* | SELECT current_timestamp, week(current_timestamp)
クエリと分析結果
week_of_year 関数
week_of_year 関数は、指定した日付が属する年の週番号を返します。この関数は week 関数と同じです。
構文
week_of_year(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は date 型または timestamp 型です。 |
戻り値の型
bigint 型。
例
current_timestamp 関数を使用して現在の日付と時刻を取得します。次に、week_of_year 関数を使用して現在の日付が属する年の週番号を取得します。
クエリステートメント(デバッグ)
* | SELECT current_timestamp, week_of_year(current_timestamp)
クエリと分析結果
year 関数
year 関数は指定した日付の年を返します。
構文
year(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は date 型または timestamp 型です。 |
戻り値の型
bigint 型。
例
current_timestamp 関数を使用して現在の日付と時刻を取得します。次に、year 関数を使用して現在の日付の年を取得します。
クエリステートメント(デバッグ)
* | SELECT current_timestamp,year(current_timestamp)
クエリと分析結果
year_of_week 関数
year_of_week 関数は、ISO 週日付システムで指定した日付が属する年を返します。この関数は yow 関数と同じです。
構文
year_of_week(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は date 型または timestamp 型です。 |
戻り値の型
bigint 型。
例
current_timestamp 関数を使用して現在の日付と時刻を取得します。次に、year_of_week 関数を使用して、ISO 週日付システムで現在の日付が属する年を取得します。
クエリステートメント(デバッグ)
* | SELECT current_timestamp,year_of_week(current_timestamp)
クエリと分析結果
yow 関数
yow 関数は ISO 週日付システムで指定した日付が属する年を返します。この関数は year_of_week 関数と同じです。
構文
yow(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は date 型または timestamp 型です。 |
戻り値の型
bigint 型。
例
current_timestamp 関数を使用して現在の日付と時刻を取得します。次に、yow 関数を使用して ISO 週日付システムで現在の日付が属する年を取得します。
クエリステートメント(デバッグ)
* | SELECT current_timestamp, yow(current_timestamp)
クエリと分析結果
date_trunc 関数
date_trunc 関数は、指定した時間単位に基づいて日時式を切り捨てます。式はミリ秒、秒、分、時、日、月、または年単位で切り捨てることができます。この関数は、時間単位での統計分析が必要なシナリオでよく使用されます。
構文
date_trunc(unit, x)
パラメーター
パラメーター | 説明 |
unit | 時間単位。有効な値:millisecond、second、minute、hour、day、week、month、quarter、year。詳細については、「単位」をご参照ください。 |
x | このパラメーターの値は日時式です。 |
date_trunc 関数では、固定間隔に基づいてのみ統計を測定できます。間隔は、関数で指定した時間単位によって決まります。時間単位には分または時が含まれます。カスタム間隔に基づいて統計を測定する場合は、数学的剰余演算を実行してデータをグループ化することをお勧めします。たとえば、数学的剰余演算を実行して、5 分間隔でデータをグループ化します。
* | SELECT count(1) AS pv, __time__ - __time__ %300 AS time GROUP BY time LIMIT 100
戻り値の型
パラメーター値のデータ型と同じです。
例
リクエストの平均継続時間を分単位で計算します。次に、継続時間を時系列でグループ化してソートします。
クエリステートメント(デバッグ)
* | 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
クエリと分析結果
date_add 関数
date_add 関数は、日付または時刻に指定された間隔を加算または減算します。
構文
date_add(unit, n, x)
パラメーター
パラメーター | 説明 |
unit | 時間単位。有効な値:millisecond、second、minute、hour、day、week、month、quarter、year。詳細については、「単位」をご参照ください。 |
n | 時間間隔。 |
x | このパラメーターの値は、タイムスタンプ値を返すことができる日時式です。 |
戻り値の型
timestamp 型。
例
前日のログをクエリします。
クエリステートメント(デバッグ)
* | SELECT * FROM log WHERE __time__ < to_unixtime(current_timestamp) AND __time__ > to_unixtime(date_add('day', -1, current_timestamp))
クエリと分析結果
date_diff 関数
date_diff 関数は、2 つの日付または時点の差を返します。
構文
date_diff(unit, x, y)
パラメーター
パラメーター | 説明 |
unit | 時間単位。有効な値:millisecond、second、minute、hour、day、week、month、quarter、year。詳細については、「単位」をご参照ください。 |
x | このパラメーターの値は、タイムスタンプ値を返すことができる日時式です。 |
y | このパラメーターの値は、タイムスタンプ値を返すことができる日時式です。 |
戻り値の型
bigint 型。
例
UsageStartTime
フィールドと UsageEndTime
フィールドに基づいてサーバーの実行時間を計算します。
クエリステートメント
* | SELECT date_diff('hour', UsageStartTime, UsageEndTime) AS "Time difference (hour)"
クエリと分析結果
time_series 関数
time_series 関数は、指定されたタイムウィンドウで値が返されないフィールドに値を追加します。
time_series 関数は GROUP BY 句および ORDER BY 句と組み合わせて使用する必要があります。ORDER BY 句で DESC キーワードを使用してデータをソートすることはできません。
構文
time_series(x, window_time, format, padding_data)
パラメーター
パラメーター | 説明 |
x | 時間列。例: |
window_time | タイムウィンドウの期間。単位:s、m、h、d。s は秒、m は分、h は時、d は日を示します。例:2h、5m、3d。 |
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
クエリと分析結果
形式
形式 | 説明 |
%a | 曜日の省略形。例:Sun、Sat。 |
%b | 月の省略形。例:Jan、Dec。 |
%c | 月。値は数値型です。有効な値:1 ~ 12。 |
%D | 月の日付。例:0th、1st、2nd、3rd。 |
%d | 月の日付。値は 10 進数形式です。有効な値:01 ~ 31。 |
%e | 月の日付。値は 10 進数形式です。有効な値:1 ~ 31。 |
%H | 時。24 時間制が使用されます。 |
%h | 時。12 時間制が使用されます。 |
%i | 分。値は数値型です。有効な値:00 ~ 59。 |
%j | 年の通算日。有効な値:001 ~ 366。 |
%k | 時。有効な値:0 ~ 23。 |
%l | 時。有効な値:1 ~ 12。 |
%M | 月の正式名称。例:January、December。 |
%m | 月。値は数値型です。有効な値:01 ~ 12。 |
%p | 午前または午後を示す省略形。有効な値:AM、PM。 |
%r | 時刻。12 時間制が使用されます。時刻は |
%S | 秒。有効な値:00 ~ 59。 |
%s | 秒。有効な値:00 ~ 59。 |
%f | マイクロ秒。有効な値:000000 ~ 999999。 |
%T | 時刻。24 時間制が使用されます。時刻は |
%v | 年の週番号。週の最初の曜日は月曜日です。有効な値:01 ~ 53。 |
%W | 曜日の正式名称。例:Sunday、Saturday。 |
%Y | 4 桁の年。例:2020。 |
%y | 2 桁の年。例:20。 |
%% | パーセント記号(%)のエスケープ文字。 |
単位
単位 | 説明 |
millisecond | ミリ秒 |
second | 秒 |
minute | 分 |
hour | 時 |
day | 日 |
week | 週 |
month | 月 |
quarter | 四半期 |
year | 年 |