Log Service は、時間関数、日付関数、及び間隔関数をサポートしています。 このドキュメントで紹介した日付、時刻、および間隔関数を分析構文で使用できます。

日時タイプ

  1. unixtime:int 型で 1970 年 1 月 1 日からの秒数を示します。 例えば、1512374067は、 Mon Dec 4 15:54:27 CST 2017の時刻を示し, 各ログの Log Service 組み込み時刻 __time__は上記タイプのものです。
  2. timestamp type: 時刻を文字列形式で示します。 たとえば、2017-11-01 13:30:00 のようになります。

日付関数

Log Service サポートされている共通の日付機能関数は、次のとおりです。

関数 説明
current_date 現在の日付を返します。 latency>100| select current_date
current_time 現在の時間を返します。 latency>100| select current_time
current_timestamp current_date と current_time を組み合わせた結果を返します。 latency>100| select current_timestamp
current_timezone() タイムゾーンを返します。 latency>100| select current_timezone()
from_iso8601_timestamp(string) iso8601 時刻をタイムゾーンの時刻に変換します。 latency>100| select from_iso8601_timestamp(iso8601)
from_iso8601_date(string) iso8601 時刻を日付に変換します。 latency>100| select from_iso8601_date(iso8601)
from_unixtime(unixtime) UNIX の時刻をタイムスタンプに変換します。 latency>100| select from_unixtime(1494985275)
from_unixtime(unixtime,string) 文字列をタイムゾーンとして使用して、UNIX の時刻をタイムスタンプに変換します。 latency>100| select from_unixtime (1494985275,'Asia/Shanghai')
localtime 現在の時刻を返します。 latency>100| select localtime
localtimestamp 現在のタイムスタンプを返します。 latency>100| select localtimestamp
now() current_timestampに相当 -
to_unixtime(timestamp) タイムスタンプを UNIX 時刻に変換します。 *| select to_unixtime('2017-05-17 09:45:00.848 Asia/Shanghai')

時間関数

MySQL の時刻形式

Log Service は、%a、%b、%y などの MySQL の時刻形式をサポートしています。

関数 意味
date_format(timestamp, format) 形式を使用して表現されるタイムスタンプを変換します。 latency>100| select date_format (date_parse('2017-05-17 09:45:00','%Y-%m-%d %H:%i:%S'), '%Y-%m-%d') group by method
date_parse(string, format) 形式を使用して文字列をタイムスタンプに解析します。 latency>100|select date_parse('2017-05-17 09:45:00','%Y-%m-%d %H:%i:%S') group by method
表 1. 説明
形式 説明
%a 1 週間のうちの 1 日の省略形(日..土).
%b 月の略語(Jan..Dec)。
%c 数字のタイプの月(1 .. 12)[4]。
%D 接尾辞付きの月の日(0 番目、1 番目、2 番目、3 番目、…)。
%d 日(01 .. 31)[4]。
%e 日(01 .. 31)[4]。
%H 時(00 .. 23)。
%h 時(01 .. 12)。
%I 12 時間形式の時間(01 … 12)。
%i 分(00 .. 59)。
%j 年の日(001 .. 366)。
%k 時(0 .. 23)。
%l 時(1 .. 12)。
%M 英語で表示される月 (January .. December).
%m 月の数字(01 .. 12)[4]。
%p 午前または午後。
%r 12 時間形式の時刻。形式は、hh:mm:ss、AM / PM
% S 秒(00 .. 59).
%s 秒(00 .. 59).
%T 24 時間形式の時刻(hh:mm:ss)。
%U 一年の週(00 .. 53)。 毎週の最初の日は日曜日です。 値の範囲:00~53。
%u 一年の週(00 .. 53)。 毎週の最初の日は日曜日です。 値の範囲:00~53。
%V 一年の週(00 .. 53)。 毎週の最初の日は日曜日です。 値の範囲:01~53。 %X と組み合わせてこの形式を使用してください。
%v 一年の週(00 .. 53)。 毎週の最初の日は日曜日です。 値の範囲:01~53。 %x と組み合わせてこの形式を使用してください。
%W 曜日の名前(日曜日..土曜日)。
%w 曜日(0 .. 6)。 日曜日は 0 日です。
%Y 年。(4 桁)
%y 年。(2 桁)
%% % エスケープ文字
時間軸合わせ機能

Log Service は、秒、分、時、日、月、年順に沿って期間の整列機能をサポートしています。 期間整列機能は、統計は時間に応じた際に、時間軸合わせ機能が使用されます

関数の構文:

date_trunc(unit, x)

パラメータ:

Unit のオプションの値は次のとおりです (x は2001-08-22 03:04:05.000):

単位 変換された結果
second 2001-08-22 03:04:05.000
minute 2001-08-22 03:04:00.000
hour 2001-08-22 03:00:00.000
day 2001-08-22 00:00:00.000
week 2001-08-20 00:00:00.000
month 2001-08-01 00:00:00.000
quarter 2001-07-01 00:00:00.000
year 2001-01-01 00:00:00.000

x は、タイムスタンプ型または UNIX の 時刻型にすることができます。

date_trunc 一定の期間ごとにしか統計を作成できません。 たとえば、柔軟な時間ディメンションに従って統計を作成する必要がある場合は、統計を 5 分ごとにわたって作成し、数学的モジュラス法に従って GROUP BY を実行します。

* | SELECT count(1) as pv,  __time__ - __time__% 300 as minute5groupby minute5 limit 100

%300は 5 分ごとにモジュラスとアライメントを行うことを示します。

日付関数の例

時刻形式を使用した例:
*|select  date_trunc('minute' ,  __time__)  as t,
       truncate (avg(latency) ) ,
       current_date  
       group by t
       order by t desc 
       limit 60

間隔関数

間隔関数は、間隔関連の計算を実行するために使用されます。 たとえば、日付の間隔を追加または削除するか、または 2 つの日付間の時間を計算します。

関数 説明
date_add(unit, value, timestamp) timestampvalueunitを追加します。 マイナス計算を実行するには、負のvalueを使用します。 date_add('day', -7, '2018-08-09 00:00:00')は、8 月 9 日の 7 日前を示します。
date_diff(unit, timestamp1, timestamp2) timestamp1timestamp2の間のunitの数。 date_diff('day', '2018-08-02 00:00:00', '2018-08-09 00:00:00') = 7
この関数は、次の間隔単位をサポートします。
単位 説明
millisecond ミリ秒
second
minute
hour 時間
day
week
month
quarter 四半期、すなわち 3 ヶ月。
year