Log Service提供時間函數、日期函數、日期和時間提取函數、時間間隔函數和時序補全函數,支援對日誌中的日期和時間進行格式轉換,分組彙總等處理。本文介紹日期和時間函數的基本文法及樣本。
Log Service支援如下日期和時間函數。
Log Service中的日誌時間戳記精確到秒,所以配置時間格式(format)時,只需配置到秒,無需配置毫秒、微秒等資訊。
只需為時間字串中的時間部分配置時間格式(format),其他內容(例如時區)無需配置時間格式。
Log Service中的每條日誌都包含保留欄位
__time__
,該欄位的值為UNIX時間戳記格式,例如1592374067,代表2020-06-17 14:07:47。在Log Service分析語句中,表示字串的字元必須使用單引號('')包裹,無符號包裹或被雙引號("")包裹的字元表示欄位名或列名。例如
'status'
表示字串status,status
或"status"
表示日誌欄位status。
函數類型 | 函數名稱 | 文法 | 說明 | 支援SQL | 支援SPL |
日期和時間函數 | current_date | 返回當前日期。 | √ | × | |
current_time | 返回目前時間和時區。 | √ | × | ||
current_timestamp | 返回當前日期、時間和時區。 | √ | × | ||
current_timezone() | 返回當前時區。 | √ | × | ||
date(x) | 返回日期和時間運算式中的日期部分。 | √ | × | ||
date_format(x, format) | 將timestamp類型的日期和時間運算式轉化為指定格式的日期和時間運算式。 | √ | √ | ||
date_parse(x, format) | 將日期和時間字串轉換為指定格式的timestamp類型的日期和時間運算式。 | √ | √ | ||
from_iso8601_date(x) | 將ISO8601格式的日期運算式轉化為date類型的日期運算式。 | √ | × | ||
from_iso8601_timestamp(x) | 將ISO8601格式的日期和時間運算式轉化為timestamp類型的日期和時間運算式。 | √ | × | ||
from_unixtime(x) | 將UNIX時間戳記轉化為無時區的timestamp類型的日期和時間運算式。 | √ | √ | ||
from_unixtime(x, time zone) | 將UNIX時間戳記轉化為帶時區的timestamp類型的日期和時間運算式。 | √ | × | ||
from_unixtime(x, hours, minutes) | 將UNIX時間戳記轉化為帶時區的timestamp類型的日期和時間運算式,其中hours和minutes為時區位移量。 | √ | × | ||
localtime | 返回本地時間。 | √ | × | ||
localtimestamp | 返回本地日期和時間。 | √ | × | ||
now() | 返回當前日期和時間。 now函數等同於current_timestamp函數。 | √ | × | ||
to_iso8601(x) | 將date類型或timestamp類型的日期和時間運算式轉換為ISO8601格式的日期和時間運算式。 | √ | × | ||
to_unixtime(x) | 將timestamp類型的日期和時間運算式轉化成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個時間單位(unit)。 | √ | √ | ||
date_diff(unit, x, y) | 返回兩個時間運算式之間的時間差值,例如計算x和y之間相差幾個時間單位(unit)。 | √ | √ | ||
時序補全函數 | 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函數用於提取日期和時間運算式中的日期部分。date函數等同於cast(x as date)
。更多資訊,請參見類型轉換函式。
文法
date(x)
參數說明
參數 | 說明 |
x | 參數值為date、timestamp類型。 |
傳回值類型
date類型。
樣本
使用current_timestamp函數擷取當前日期和時間,然後使用date函數提取日期部分。
查詢和分析語句(調試)
* | SELECT current_timestamp, date(current_timestamp)
查詢和分析結果
date_format函數
date_format函數用於將timestamp類型的日期和時間運算式轉換為指定格式的日期和時間運算式。
文法
date_format(x, format)
參數說明
參數 | 說明 |
x | 參數值為timestamp類型的日期和時間運算式。 |
format | 日期和時間運算式的轉換格式。更多資訊,請參見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 | 日期和時間運算式的轉換格式。更多資訊,請參見format說明。 |
傳回值類型
timestamp類型。
樣本
將StartTime
欄位值和EndTime
欄位值轉換為timestamp類型,並計算兩者的時間差。
查詢和分析語句
*| 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 "時間差(小時)"
查詢和分析結果
from_iso8601_date函數
from_iso8601_date函數用於將ISO8601格式的日期運算式轉化為date類型的日期運算式,格式為YYYY-MM-DD。
文法
from_iso8601_date(x)
參數說明
參數 | 說明 |
x | 參數值為ISO8601格式的日期運算式。 |
傳回值類型
date類型。
樣本
將time
欄位的值轉換為date類型的日期運算式。
欄位範例
time:2020-05-03
查詢和分析語句
* | select from_iso8601_date(time)
查詢和分析結果
from_iso8601_timestamp函數
from_iso8601_timestamp函數用於將ISO8601格式的日期和時間運算式轉化為timestamp類型的日期和時間運算式,格式為YYYY-MM-DD HH:MM:SS.Ms Time_zone。
文法
from_iso8601_timestamp(x)
參數說明
參數 | 說明 |
x | 參數值為ISO8601格式的日期和時間運算式。 |
傳回值類型
timestamp類型。
樣本
將time欄位的值轉換為timestamp類型的日期和時間運算式。
欄位範例
time:2020-05-03T17:30:08
查詢和分析語句
* | select from_iso8601_timestamp(time)
查詢和分析結果
from_unixtime函數
from_unixtime函數用於將UNIX時間戳記轉化為timestamp類型的日期和時間運算式,格式為YYYY-MM-DD HH:MM:SS.Ms或YYYY-MM-DD HH:MM:SS.Ms Time_zone。
文法
轉化為無時區的timestamp類型的日期和時間運算式
from_unixtime(x)
轉化為帶時區的timestamp類型的日期和時間運算式
from_unixtime(x,time zone)
轉化為帶時區的timestamp類型的日期和時間運算式,其中hours和minutes為時區位移量。
from_unixtime(x, hours, minutes)
參數說明
參數 | 說明 |
x | 參數值為UNIX時間戳記。 |
time zone | 時區,例如Asia/shanghai。 |
hours | 時區的小時位移量,例如+07、-09 |
minutes | 時區的分鐘位移量,例如+30、-45。 |
傳回值類型
timestamp類型。
樣本
將time
欄位的值轉化為帶時區的timestamp類型的日期和時間運算式。
欄位範例
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。now函數等同於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函數用於將date類型或timestamp類型的日期和時間運算式轉換為ISO8601格式的日期和時間運算式。
文法
to_iso8601(x)
參數說明
參數 | 說明 |
x | 參數值為date、timestamp類型。 |
傳回值類型
varchar類型。
樣本
使用current_timestamp函數擷取當前日期和時間,然後使用to_iso8601函數將當前的日期和時間運算式轉換為ISO8601格式的日期和時間運算式。
查詢和分析語句(調試)
* | select to_iso8601(current_timestamp) AS ISO8601
查詢和分析結果
to_unixtime函數
to_unixtime函數用於將timestamp類型的日期和時間運算式轉化成UNIX時間戳記。
文法
to_unixtime(x)
參數說明
參數 | 說明 |
x | 參數值為timestamp類型的日期和時間運算式。 |
傳回值類型
double類型。
樣本
查詢昨天的日誌。
查詢和分析語句(調試)
* | SELECT * FROM log WHERE __time__ < to_unixtime(now()) AND __time__ > to_unixtime(date_add('day', -1, now()))
查詢和分析結果
day函數
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_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函數用於提取日期和時間運算式中的天數,按周計算。dow函數等同於day_of_week函數。
文法
dow(x)
參數說明
參數 | 說明 |
x | 參數值為timestamp、date類型。 |
傳回值類型
bigint類型。
樣本
使用current_date函數擷取當前日期,然後使用dow函數提取當前日期為本周的第幾天。
查詢和分析語句(調試)
* | SELECT current_date, dow(current_date)
查詢和分析結果
doy函數
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(actual varchar(9))類型。 |
傳回值類型
bigint類型。
樣本
使用current_date函數擷取當前日期,然後使用extract函數提取當前日期中的年份。
查詢和分析語句(調試)
* | SELECT extract(year from current_date)
查詢和分析結果
hour函數
hour函數用於提取日期和時間運算式中的小時數,按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函數擷取當前日期和時間,然後使用quarterFunction Compute當前日期所屬的季度。
查詢和分析語句(調試)
* | 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_hourFunction Compute目前時間所屬時區的小時位移量。
查詢和分析語句(調試)
* | SELECT current_timestamp, timezone_hour(current_timestamp)
查詢和分析結果
timezone_minute函數
timezone_minute函數用於計算時區的分鐘位移量。
文法
timezone_minute(x)
參數說明
參數 | 說明 |
x | 參數值為timestamp類型。 |
傳回值類型
bigint類型。
樣本
使用current_timestamp函數擷取當前日期和時間,然後使用timezone_minuteFunction Compute目前時間所屬時區的分鐘位移量。
查詢和分析語句(調試)
* | SELECT current_timestamp,timezone_minute(current_timestamp)
查詢和分析結果
week函數
week函數用於計算目標日期是在一年中的第幾周。week函數等同於week_of_year函數。
文法
week(x)
參數說明
參數 | 說明 |
x | 參數值為date、timestamp類型。 |
傳回值類型
bigint類型。
樣本
使用current_timestamp函數擷取當前日期和時間,然後使用weekFunction Compute當前日期是一年中的第幾周。
查詢和分析語句(調試)
* | SELECT current_timestamp, week(current_timestamp)
查詢和分析結果
week_of_year函數
week_of_year函數用於計算目標日期是在一年中的第幾周。week_of_year函數等同於week函數。
文法
week_of_year(x)
參數說明
參數 | 說明 |
x | 參數值為date、timestamp類型。 |
傳回值類型
bigint類型。
樣本
使用current_timestamp函數擷取當前日期和時間,然後使用week_of_yearFunction Compute當前日期是一年中的第幾周。
查詢和分析語句(調試)
* | 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周日曆中的年份。year_of_week函數等同於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周日曆中的年份。yow函數等同於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。更多資訊,請參見unit說明。 |
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。更多資訊,請參見unit說明。 |
n | 時間間隔。 |
x | 參數值為timestamp類型日期和時間運算式。 |
傳回值類型
timestamp類型。
樣本
查詢昨天的日誌。
查詢和分析語句(調試)
* | SELECT * FROM log WHERE __time__ < to_unixtime(current_timestamp) AND __time__ > to_unixtime(date_add('day', -1, current_timestamp))
查詢和分析結果
date_diff函數
date_diff函數用於計算兩個日期或時間之間的差值。
文法
date_diff(unit, x, y)
參數說明
參數 | 說明 |
unit | 時間單位,取值為millisecond、second、minute、hour、day、week、month、quarter、year。更多資訊,請參見unit說明。 |
x | 參數值為timestamp類型日期和時間運算式。 |
y | 參數值為timestamp類型日期和時間運算式。 |
傳回值類型
bigint類型。
樣本
通過UsageStartTime
欄位和UsageEndTime
欄位計算服務器使用的總時間長度。
查詢和分析語句
* | SELECT date_diff('hour', UsageStartTime, UsageEndTime) AS "時間差(小時)"
查詢和分析結果
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(天)。例如2h、5m、3d。 |
format | 返回結果的時間格式。更多資訊,請參見format說明。 |
padding_data | 補全的內容。包括:
|
傳回值類型
varchar類型。
樣本
按照兩個小時的時間粒紋進行資料補全,將缺失的值設定為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
查詢和分析結果
format說明
format | 說明 |
%a | 星期的縮寫。例如Sun、Sat。 |
%b | 月份的縮寫。例如Jan、Dec。 |
%c | 月份。數實值型別,取值範圍為1~12。 |
%D | 每月的第幾天。需加上尾碼,例如0th、1st、2nd、3rd。 |
%d | 每月的第幾天。十進位格式,取值範圍為01~31。 |
%e | 每月的第幾天。十進位格式,取值範圍為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。 |
%% | %的逸出字元。 |
unit說明
unit | 說明 |
millisecond | 毫秒 |
second | 秒 |
minute | 分鐘 |
hour | 小時 |
day | 天 |
week | 周 |
month | 月 |
quarter | 季度 |
year | 年 |