tencent cloud

Cloud Log Service

日付と時間関数

ダウンロード
フォーカスモード
フォントサイズ
最終更新日: 2026-10-12 14:32:15
AI翻訳
CLSは時間グループ化関数、時間切り捨て関数、時間間隔関数、時系列補完関数を提供し、ログ内の日付と時刻の形式変換、グループ化集計などの処理をサポートします。
注意:
UNIXタイムスタンプを変換する際、histogram関数とtime_series関数はUTC+8タイムゾーンを採用しますが、その他の関数はすべてUTC+0タイムゾーンを採用します。タイムゾーンを変換する必要がある場合は、指定されたタイムゾーン機能を持つ関数(例: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)

時間グループ化関数

固定時間間隔でログデータをグループ化して集計することをサポートしています。例えば、5分ごとのアクセス回数を集計するなどのシーンです。
関数形式
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 での使用をサポートしていません)。
例
1. 5分ごとのアクセス回数PV値を集計します。
* | select histogram(__TIMESTAMP__, INTERVAL 5 MINUTE) AS dt, count(*) as PV group by dt order by dt limit 10000
2. 動的な時間間隔でアクセス回数のPV値を集計します。
* | select histogram(__TIMESTAMP__, INTERVAL ${__interval}) AS dt, count(*) as PV group by dt order by dt limit 10000

時間補完関数

time_series()は固定時間間隔でログデータをグループ化して集計することをサポートしています。histogram()関数との主な違いは、クエリ時間枠内の欠落データを補完できることです。
注意:
time_series()関数はGROUP BY構文およびORDER BY構文と併用する必要があります。また、ORDER BY構文はdescソート方式をサポートしていません。
関数形式
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
返却結果の時間形式には、format 形式を使用します。
padding
補完される内容には、以下が含まれます:
0:欠損値を0で補完します。
null:欠損値をnullで補完します。
last:欠損値を直前の時点の値で補完します。
next:欠損値を次の時点の値で補完します。
avg:欠損値を前後2つの時点の平均値で補完します。
例
1. 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
2. 動的な時間粒度でデータを補完します。クエリと分析ステートメントは以下の通りです。
* | 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()関数は、指定された日時部分に基づいて日時式を切り捨て、秒、分、時、日、月、年単位でのアラインメントをサポートします。この関数は、時間に基づく統計分析が必要なシナリオでよく使用されます。
関数名
説明
例
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))
fieldは以下の値をサポートします:year、quarter、month、week、day、day_of_month、day_of_week、dow、day_of_year、doy、year_of_week、yow、hour、minute、second。
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)

時間間隔関数

時間間隔関数は、時間区間に関連する演算を実行するために使用されます。例えば、日付に指定された時間間隔を加算または減算したり、2つの日付間の時間を計算したりします。
関数名
説明
例
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の値は以下の通りです:
unit
説明
millisecond
ミリ秒
second
秒
minute
分
hour
時間
day
日
week
週
month
月
quarter
四半期
year
年
例
'2020-03-01 00:00:00' と '2020-03-02 00:00:00' のsecond単位での間隔数値を返します。クエリ分析ステートメントは以下の通りです。
* | 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
日
例
ユニット値「3.81 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説明:
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です。
%%
%のエスケープ文字です。
例
format形式の時間文字列「2017-05-17 09:45:00」をTIMESTAMP型の日時式、つまり「2017-05-17 09:45:00.0」に変換します。クエリ分析文は以下の通りです。
* | SELECT date_parse('2017-05-17 09:45:00','%Y-%m-%d %H:%i:%s')


ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック