from_unixtime(__TIMESTAMP__/1000, 'Asia/Shanghai'))を使用するか、手動でタイムゾーンオフセットを追加します(例:cast(__TIMESTAMP__+8*60*60*1000 as timestamp)またはcast(__TIMESTAMP__ as timestamp)+ INTERVAL 8 HOUR)。関数名 | 説明 | 例 |
current_date | 現在の日付を返します。 戻り値の形式:YYYY-MM-DD、例:2021-05-21。 戻り値の型:DATE。 | * | select current_date
|
current_time | 現在の時刻を返します。 戻り値の形式:HH:MM:SS.Ms Time zone、例:17:07:52.143+08:00。 戻り値の型:TIME。 | * | select current_time
|
current_timestamp | 現在のタイムスタンプを返します。 戻り値の形式:YYYY-MM-DDTHH:MM:SS.Ms Time zone、例:2021-07-15T17:10:56.735+08:00[Asia/Shanghai]。 戻り値の型:TIMESTAMP。 | * | select current_timestamp
|
current_timezone () | IANAが定義したタイムゾーン(America/Los_Angeles)またはUTCに対するオフセット時差(+08:35)を返します。 戻り値の型:VARCHAR、例:Asia/Shanghai。 | * | select current_timezone()
|
localtime | ローカル時間を返します。 戻り値の形式:HH:MM:SS.Ms、例:19:56:36。 戻り値の型:TIME。 | * | select localtime |
localtimestamp | ローカルの日付と時刻を返します。 戻り値の形式:YYYY-MM-DD HH:MM:SS.Ms、例:2021-07-15 19:56:26.908。 戻り値の型:TIMESTAMP。 | * | select localtimestamp |
now () | 現在の日付と時刻を返します。current_timestamp関数と同じ用法です。 戻り値の形式:YYYY-MM-DDTHH:MM:SS.Ms Time zone、例:2021-07-15T17:10:56.735+08:00[Asia/Shanghai]。 戻り値の型:TIMESTAMP。 | * | select now() |
last_day_of_month (x) | 月の最終日を返します。 戻り値の形式:YYYY-MM-DD、例:2021-05-31。 戻り値の型:DATE。 | * | select last_day_of_month(cast(__TIMESTAMP__ as timestamp)) |
from_iso8601_date (string) | ISO8601形式の日付式をDATE型の日付式に変換します。 戻り値の形式:YYYY-MM-DD、例:2021-05-31。 戻り値の型:DATE。 | * | select from_iso8601_date('2021-03-21') |
from_iso8601_timestamp (string) | ISO8601形式の日時式をタイムゾーン付きTIMESTAMP型の日時式に変換します。 戻り値の形式:HH:MM:SS.Ms Time zone。例:2021-07-15T17:10:56.735+08:00[Asia/Shanghai]。 戻り値の型:TIMESTAMP。 | * | select from_iso8601_timestamp('2020-05-13') |
from_unixtime (unixtime) | UNIXタイムスタンプ(秒単位)をTIMESTAMP型の日時式に変換します。 戻り値の形式:YYYY-MM-DD HH:MM:SS.Ms、例:2017-05-17 01:41:15.000。 戻り値の型:TIMESTAMP。 注意:この関数はUTC+0タイムゾーンを採用しています。タイムゾーンを指定する必要がある場合は、from_unixtime(unixtime, zone)を使用してください。 | 示例1:
* | select from_unixtime(1494985275)
示例2:
* | select from_unixtime(__TIMESTAMP__/1000) |
from_unixtime (unixtime, zone) | UNIXタイムスタンプ(秒単位)をタイムゾーン付きTIMESTAMP型の日時式に変換します。 戻り値の形式:YYYY-MM-DD HH:MM:SS.Ms Time zone。例:2017-05-17T09:41:15+08:00[Asia/Shanghai]。 戻り値の型:TIMESTAMP。 | 示例1:
* | select from_unixtime(1494985275, 'Asia/Shanghai')
示例2:
* | select from_unixtime(__TIMESTAMP__/1000, 'Asia/Shanghai') |
to_unixtime (timestamp) | TIMESTAMP型の日時式をUnixtimeタイムスタンプに変換します。 戻り値の型:LONG。例:1626347592。 | * | select to_unixtime(cast(__TIMESTAMP__ as timestamp)) |
to_milliseconds (interval) | ミリ秒単位で間隔の時間値を返します。 戻り値の型:BIGINT。例:300000。 | * | select to_milliseconds(INTERVAL 5 MINUTE) |
to_iso8601 (x) | DATE型またはTIMESTAMP型の日時式をISO8601形式の日時式に変換します。 | * | select to_iso8601(current_timestamp) |
timezone_hour (timestamp) |
TIMESTAMPが属するタイムゾーンの時間オフセットを返します。
| * | SELECT current_timestamp, timezone_hour(current_timestamp) |
timezone_minute (timestamp) | TIMESTAMPが属するタイムゾーンの分オフセットを返します。 | * | SELECT current_timestamp, timezone_minute(current_timestamp) |
histogram(time_column, interval)
パラメータ | 説明 |
time_column | 時間列(KEY)、例えば __TIMESTAMP__ です。この列の値は、ミリ秒の LONG 型 UNIX タイムスタンプまたは TIMESTAMP 型の日時式である必要があります。 時間列が上記の要件を満たさない場合は、cast関数を使用してISO8601形式の時間文字列をTIMESTAMP型に変換できます。例えば cast('2020-08-19T03:18:29.000Z' as timestamp)です。またはdate_parse関数を使用して他のカスタム型の時間文字列を変換します。 注意:時間列にTIMESTAMPを使用する場合、対応する日時式はUTC+0タイムゾーンである必要があります。日時式自体が他のタイムゾーンである場合は、計算によりUTC+0タイムゾーンに調整する必要があります。例えば元の時間が北京時間(UTC+8)の場合、 cast('2020-08-19T03:18:29.000Z' as timestamp) - interval 8 hourを使用して調整します。 |
interval | 固定時間間隔です。サポートされる単位は SECOND(秒)、MINUTE(分)、HOUR(時間)、DAY(日)です。例えば、時間間隔が5分の場合、INTERVAL 5 MINUTE です。 動的時間間隔の形式は:${__interval}です。${__interval}の値は、クエリの時間範囲に基づいて自動的に変化します。例えば、直近1時間のデータをクエリする場合、時間間隔は1分です。直近1日のデータをクエリする場合、時間間隔は15分です。(注意:${__interval} は現在 API での使用をサポートしていません)。 |
* | select histogram(__TIMESTAMP__, INTERVAL 5 MINUTE) AS dt, count(*) as PV group by dt order by dt limit 10000
* | select histogram(__TIMESTAMP__, INTERVAL ${__interval}) AS dt, count(*) as PV group by dt order by dt limit 10000
time_series(time_column, interval, format, padding)
パラメータ | 説明 |
time_column | 時間列(KEY)、例えば __TIMESTAMP__ です。この列の値は、ミリ秒の LONG 型 UNIX タイムスタンプまたは TIMESTAMP 型の日時式である必要があります。 時間列が上記の要件を満たさない場合は、cast関数を使用してISO8601形式の時間文字列をTIMESTAMP型に変換できます。例えば cast('2020-08-19T03:18:29.000Z' as timestamp)です。またはdate_parse関数を使用して他のカスタム型の時間文字列を変換します。 注意:時間列にTIMESTAMPを使用する場合、対応する日時式はUTC+0タイムゾーンである必要があります。日時式自体が他のタイムゾーンである場合は、計算によりUTC+0タイムゾーンに調整する必要があります。例えば元の時間が北京時間(UTC+8)の場合、 cast('2020-08-19T03:18:29.000Z' as timestamp) - interval 8 hourを使用して調整します。 |
interval | 固定時間間隔です。サポートされる単位はs(秒)、m(分)、h(時間)、d(日)です。例えば5分の場合、5mです。 動的時間間隔の形式は:${__interval}です。${__interval}の値は、クエリの時間範囲に基づいて自動的に変化します。例えば、直近1時間のデータをクエリする場合、時間間隔は1分です。直近1日のデータをクエリする場合、時間間隔は15分です。(注意:${__interval} は現在 API での使用をサポートしていません)。 |
format | |
padding | 補完される内容には、以下が含まれます: 0:欠損値を0で補完します。 null:欠損値をnullで補完します。 last:欠損値を直前の時点の値で補完します。 next:欠損値を次の時点の値で補完します。 avg:欠損値を前後2つの時点の平均値で補完します。 |
* | select time_series(__TIMESTAMP__, '2m', '%Y-%m-%dT%H:%i:%s+08:00', '0') as time, count(*) as count group by time order by time limit 10000
* | select time_series(__TIMESTAMP__, '${__interval}', '%Y-%m-%dT%H:%i:%s+08:00', '0') as time, count(*) as count group by time order by time limit 10000
関数名 | 説明 | 例 |
date_trunc (unit,x) | xをunit単位に切り捨てます。xはtimestamp型です。 | * | SELECT date_trunc('second', cast(__TIMESTAMP__ as timestamp)) |
unit | 変換結果 | 説明 |
second | 2021-05-21 05:20:01.000 | - |
minute | 2021-05-21 05:20:00.000 | - |
hour | 2021-05-21 05:00:00.000 | - |
day | 2021-05-21 00:00:00.000 | 指定された日付の0時を返します。 |
week | 2021-05-19 00:00:00.000 | 指定された週の月曜日0時を返します。 |
month | 2021-05-01 00:00:00.000 | 指定された月の最初の日の0時を返します。 |
quarter | 2021-04-01 00:00:00.000 | 指定された四半期の最初の日の0時を返します。 |
year | 2021-01-01 00:00:00.000 | 本年度の最初の日の0時を返します。 |
関数名 | 説明 | 例 |
extract (field FROM x) | 日付と時刻の式(x)から指定された時間部分(field)を抽出します。 | * |select extract(hour from cast('2021-05-21 05:20:01.100' as timestamp)) |
extract(field FROM x)はfield()の形式に簡略化することもできます。例えば、extract(hour from cast('2021-05-21 05:20:01.100' as timestamp))はhour(cast('2021-05-21 05:20:01.100' as timestamp))に簡略化できます。field | 抽出結果 | 説明 | 簡略形式 |
year | 2021 | 対象日付から年を抽出します。 | year(x) |
quarter | 2 | 対象日付が属する四半期を抽出します。 | quarter(x) |
month | 5 | 対象日付から月を抽出します。 | month(x) |
week | 20 | 対象日付がその年の第何週にあたるかを計算します。 | week(x) |
day | 21 | 対象日付から日を抽出し、月ごとに計算します。これはday_of_monthに相当します。 | day(x) |
day_of_month | 21 | dayに相当します。 | day(x) |
day_of_week[] | 5 | 対象日付が週の何日目にあたるかを計算します。これはdowに相当します。 | day_of_week(x) |
dow[] | 5 | day_of_weekに相当します。 | day_of_week(x) |
day_of_year | 141 | 対象日付が一年のうちの何日目にあたるかを計算します。これはdoyに相当します。 | day_of_year(x) |
doy | 141 | day_of_yearに相当します。 | day_of_year(x) |
year_of_week | 2021 | 対象日付のISO週番号カレンダーにおける年を抽出します。これはyowと同等です。 | year_of_week(x) |
yow | 2021 | year_of_weekに相当します。 | year_of_week(x) |
hour | 5 | 対象日付から時間を抽出します。 | hour(x) |
minute | 20 | 対象日付から分を抽出します。 | minute(x) |
second | 1 | 対象日付から秒を抽出します。 | second(x) |
関数名 | 説明 | 例 |
date_add (unit,value,timestamp) | timestampにN個の時間単位(unit)を加算します。valueが負の場合は減算となります。 | * | SELECT date_add('day', -1, TIMESTAMP '2020-03-03 03:01:00')
2020年3月3日の1日前の日付と時刻、つまり2020-03-02 03:01:00を返します。 |
date_diff (unit, timestamp1, timestamp2) | 2つの時間式の間の時間差を返します。例えば、timestamp1とtimestamp2の間に何単位の時間差があるかを計算します。 | * |SELECT date_diff('hour', TIMESTAMP '2020-03-01 00:00:00', TIMESTAMP '2020-03-02 00:00:00')
2020年3月1日と3月2日の間の時間単位の差、つまり1日を返します。 |
unit | 説明 |
millisecond | ミリ秒 |
second | 秒 |
minute | 分 |
hour | 時間 |
day | 日 |
week | 週 |
month | 月 |
quarter | 四半期 |
year | 年 |
* | SELECT date_diff('second', TIMESTAMP '2020-03-01 00:00:00', TIMESTAMP '2020-03-02 00:00:00')
関数名 | 説明 | 例 |
parse_duration (string) | 単位値文字列を時間間隔式に変換します。 戻り値の型:INTERVAL。例:0 00:00:00.043(D HH:MM:SS.Ms) | * | SELECT parse_duration('3.81 d') |
human_readable_seconds (double) | 単位値文字列を時間間隔式に変換します。 戻り値の型:VARCHAR。例:1 minute, 36 seconds。 | * | SELECT human_readable_seconds(96) |
Unit | 説明 |
ns | ナノ秒 |
us | マイクロ秒 |
ms | ミリ秒 |
s | 秒 |
m | 分 |
h | 時間 |
d | 日 |
* | SELECT parse_duration('3.81 d')
関数名 | 説明 | 例 |
date_format (timestamp, format) | TIMESTAMP型の日時をFormat形式の文字列に変換します。 | * | select date_format(cast(__TIMESTAMP__ as timestamp), '%Y-%m-%d') |
date_parse (string, format) | Format形式の日時文字列をTIMESTAMP型に変換します。 | * | select date_parse('2017-05-17 09:45:00','%Y-%m-%d %H:%i:%s') |
Format | 説明 |
%a | 曜日の略称です。例えば、Sun、Satです。 |
%b | 月の略称です。例えば、Jan、Decです。 |
%c | 月です。数値型で、値の範囲は1~12です。 |
%d | 毎月の何日目かを表します。10進数形式で、値の範囲は01~31です。 |
%e | 毎月の何日目かを表します。10進数形式で、値の範囲は1~31です。 |
%f | 秒の小数部分です。date_formatでデータを表示する場合は6桁の数字(000000~999000)を使用します。date_parseでデータを変換する場合は1~9桁の数字(0~999999999)をサポートします。 |
%H | 時間、24時間制です。 |
%h | 時間、12時間制です。 |
%I | 時間、12時間制です。 |
%i | 分です。数値型で、値の範囲は00~59です。 |
%j | 一年のうちの何日目か。値の範囲は001~366です。 |
%k | 時間です。値の範囲は0~23です。 |
%l | 時間です。値の範囲は1~12です。 |
%M | 月の英語表現です。例えば、January、Decemberです。 |
%m | 月の数字表現です。例えば、01、02です。 |
%p | AM、PM。 |
%r | 時間。12時間制で、形式は hh:mm:ss AM/PMです。 |
%S | 秒です。値の範囲は00~59です。 注意:ここではミリ秒はサポートされていません。ミリ秒を使用する必要がある場合は、%fを他の関数と組み合わせて代用できます。例えば、 substr(date_format(current_timestamp,'%Y-%m-%d %T.%f'),1,23)です。 |
%s | 秒です。値の範囲は00~59です。 |
%T | 時間。24時間制で、形式は hh:mm:ssです。 |
%v | 一年のうちの第何週か。月曜日が週の最初の日です。値の範囲は01~53です。 |
%W | 曜日の名前です。例えば、Sunday、Saturdayです。 |
%Y | 4桁の年です。例えば2020です。 |
%y | 2桁の年です。例えば20です。 |
%% | %のエスケープ文字です。 |
* | SELECT date_parse('2017-05-17 09:45:00','%Y-%m-%d %H:%i:%s')
フィードバック