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時間戳記。 |
√ |
√ |
||
|
current_unixtimestamp() |
擷取當前系統的 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)) -
查詢和分析結果如下表所示,返回了包含body_bytes_sent、client_ip、host、http_user_agent等欄位的昨天的日誌資料。
current_time函數
current_time函數用於返回目前時間和時區,格式為HH:MM:SS.Ms Time_zone。
文法
current_time
傳回值類型
time類型。
樣本
查詢目前時間和時區。
-
查詢和分析語句(調試)
* | select current_time -
查詢和分析結果:_col0列傳回值為22:34:24.034 Asia/Shanghai。
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)) -
查詢和分析結果如下表所示,返回了包含body_bytes_sent、client_ip、host、http_user_agent等欄位的昨天的日誌資料。
current_timezone函數
current_timezone函數用於返回當前時區。
文法
current_timezone()
傳回值類型
varchar類型。
樣本
查詢當前的時區。
-
查詢和分析語句(調試)
* | select current_timezone() -
查詢和分析結果:_col0列傳回值為Asia/Shanghai。
date函數
date函數用於提取日期和時間運算式中的日期部分。date函數等同於cast(x as date)。更多資訊,請參見類型轉換函式。
文法
date(x)
參數說明
|
參數 |
說明 |
|
x |
參數值為date、timestamp類型。 |
傳回值類型
date類型。
樣本
使用current_timestamp函數擷取當前日期和時間,然後使用date函數提取日期部分。
-
查詢和分析語句(調試)
* | SELECT current_timestamp, date(current_timestamp) -
查詢和分析結果:_col0列返回完整時間戳記,_col1列返回日期部分,例如2021-09-07。
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 "時間差(小時)" -
查詢和分析結果:返回StartTime為2021-07-21 20:00:00.000,EndTime為2021-07-21 21:00:00.000,時間差為1小時。
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) -
查詢和分析結果:_col0列傳回值為2020-05-03,即date類型的日期。
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) -
查詢和分析結果:_col0列傳回值為2020-05-03 17:30:08.000 Asia/Shanghai,即帶時區的timestamp類型。
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') -
查詢和分析結果:_col0列傳回值為2021-07-20 17:52:38.000 Asia/Shanghai。
localtime函數
localtime函數用於返回本地時間,格式為HH:MM:SS.Ms。
文法
localtime
傳回值類型
time類型。
樣本
查詢本地時間。
-
查詢和分析語句(調試)
* | select localtime -
查詢和分析結果:_col0列傳回值為02:09:46.213。
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)) -
查詢和分析結果如下表所示,返回了包含body_bytes_sent、client_ip、host、http_user_agent等欄位的昨天的日誌資料。
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())) -
查詢和分析結果如下表所示,返回了包含body_bytes_sent、client_ip、host、http_user_agent等欄位的昨天的日誌資料。
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 -
查詢和分析結果:ISO8601列傳回值為2021-09-02T16:57:56.964+08:00。
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())) -
查詢和分析結果如下表所示,返回了包含body_bytes_sent、client_ip、host、http_user_agent等欄位的昨天的日誌資料。
current_unixtimestamp函數
該函數用於擷取當前系統的 Unix 時間戳記。Unix 時間戳記是指從國際標準時間(UTC)1970年1月1日00:00:00起至現在的總秒數。
文法
current_unixtimestamp()
傳回值
-
傳回值類型:
BIGINT(長整型) -
傳回值說明: 返回一個代表當前秒數的整數。
-
精度: 預設精確到秒。
樣本
-
樣本一:擷取目前時間戳。
最基礎的用法,用於記錄資料插入的時間。
* | extend now_ts =current_unixtimestamp() -- 輸出樣本: 1734913028 -
樣本二:格式化轉換
通常與
from_unixtime配合使用,將數字時間戳記轉回人類可讀的日期格式。* | extend readable_time = date_format(from_unixtime(cast(current_unixtimestamp() as double)), '%Y-%m-%d %H:%i:%s') -- 輸出樣本: 2025-12-23 00:17:08
日期和時間提取函數
day函數
day函數用於提取日期和時間運算式中的天數,按月計算。day函數等同於day_of_month函數。
文法
day(x)
參數說明
|
參數 |
說明 |
|
x |
參數值為timestamp、date類型。 |
傳回值類型
bigint類型。
樣本
使用current_date函數擷取當前日期,然後使用day函數提取當前日期為本月的第幾天。
-
查詢和分析語句(調試)
* | SELECT current_date, day(current_date) -
查詢和分析結果:_col0列返回當前日期,_col1列傳回值為7,表示當前日期為本月第7天。
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) -
查詢和分析結果:_col0列返回當前日期,_col1列傳回值為7,表示當前日期為本月第7天。
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) -
查詢和分析結果:_col0列返回當前日期,_col1列傳回值為2,表示當前日期為本周第2天。
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) -
查詢和分析結果:_col0列返回當前日期,_col1列傳回值為250,表示當前日期為本年第250天。
dow函數
dow函數用於提取日期和時間運算式中的天數,按周計算。dow函數等同於day_of_week函數。
文法
dow(x)
參數說明
|
參數 |
說明 |
|
x |
參數值為timestamp、date類型。 |
傳回值類型
bigint類型。
樣本
使用current_date函數擷取當前日期,然後使用dow函數提取當前日期為本周的第幾天。
-
查詢和分析語句(調試)
* | SELECT current_date, dow(current_date) -
查詢和分析結果:_col0列返回當前日期,_col1列傳回值為2,表示當前日期為本周第2天。
doy函數
doy函數用於提取日期和時間運算式中的天數,按年計算。doy函數等同於day_of_year函數。
文法
doy(x)
參數說明
|
參數 |
說明 |
|
x |
參數值為timestamp、date類型。 |
傳回值類型
bigint類型。
樣本
使用current_date函數擷取當前日期,然後使用doy函數提取當前日期為本年的第幾天。
-
查詢和分析語句(調試)
* | SELECT current_date, doy(current_date) -
查詢和分析結果:_col0列返回當前日期,_col1列傳回值為250,表示當前日期為本年第250天。
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) -
查詢和分析結果:_col0列傳回值為2021,即提取出的年份。
hour函數
hour函數用於提取日期和時間運算式中的小時數,按24小時制計算。
文法
hour(x)
參數說明
|
參數 |
說明 |
|
x |
參數值為timestamp類型。 |
傳回值類型
bigint類型。
樣本
使用current_timestamp函數擷取當前日期和時間,然後使用hour函數提取目前時間的小時數。
-
查詢和分析語句(調試)
* | SELECT current_timestamp, hour(current_timestamp) -
查詢和分析結果:_col0列返回目前時間戳,_col1列傳回值為11,即當前小時數。
minute函數
minute函數用於提取日期和時間運算式中的分鐘數。
文法
minute(x)
參數說明
|
參數 |
說明 |
|
x |
參數值為timestamp類型。 |
傳回值類型
bigint類型。
樣本
使用current_timestamp函數擷取當前日期和時間,然後使用minute函數提取目前時間的分鐘數。
-
查詢和分析語句(調試)
* | SELECT current_timestamp, minute(current_timestamp) -
查詢和分析結果:_col0列返回目前時間戳,_col1列傳回值為17,即當前分鐘數。
month函數
month函數用於提取日期和時間運算式中的月份。
文法
month(x)
參數說明
|
參數 |
說明 |
|
x |
參數值為date、timestamp類型。 |
傳回值類型
bigint類型。
樣本
使用current_timestamp函數擷取當前日期和時間,然後使用month函數提取當前日期所屬的月份。
-
查詢和分析語句(調試)
* | SELECT current_timestamp, month(current_timestamp) -
查詢和分析結果:_col0列返回目前時間戳,_col1列傳回值為9,即當前月份。
quarter函數
quarter函數用於返回日期所屬的季度。
文法
quarter(x)
參數說明
|
參數 |
說明 |
|
x |
參數值為date、timestamp類型。 |
傳回值類型
bigint類型。
樣本
使用current_timestamp函數擷取當前日期和時間,然後使用quarterFunction Compute當前日期所屬的季度。
-
查詢和分析語句(調試)
* | SELECT current_timestamp,quarter(current_timestamp) -
查詢和分析結果:_col0列返回目前時間戳,_col1列傳回值為3,即當前季度。
second函數
second函數用於提取日期和時間運算式中的秒數。
文法
second(x)
參數說明
|
參數 |
說明 |
|
x |
參數值為timestamp類型。 |
傳回值類型
bigint類型。
樣本
使用current_timestamp函數擷取當前日期和時間,然後使用second函數提取目前時間的秒數。
-
查詢和分析語句(調試)
* | SELECT current_timestamp,second(current_timestamp) -
查詢和分析結果:_col0列返回目前時間戳,_col1列傳回值為41,即當前秒數。
timezone_hour函數
timezone_hour函數用於計算時區的小時位移量。
文法
timezone_hour(x)
參數說明
|
參數 |
說明 |
|
x |
參數值為timestamp類型。 |
傳回值類型
bigint類型。
樣本
使用current_timestamp函數擷取當前日期和時間,然後使用timezone_hourFunction Compute目前時間所屬時區的小時位移量。
-
查詢和分析語句(調試)
* | SELECT current_timestamp, timezone_hour(current_timestamp) -
查詢和分析結果:_col0列返回目前時間戳,_col1列傳回值為8,即時區小時位移量(UTC+8)。
timezone_minute函數
timezone_minute函數用於計算時區的分鐘位移量。
文法
timezone_minute(x)
參數說明
|
參數 |
說明 |
|
x |
參數值為timestamp類型。 |
傳回值類型
bigint類型。
樣本
使用current_timestamp函數擷取當前日期和時間,然後使用timezone_minuteFunction Compute目前時間所屬時區的分鐘位移量。
-
查詢和分析語句(調試)
* | SELECT current_timestamp,timezone_minute(current_timestamp) -
查詢和分析結果:_col0列返回目前時間戳,_col1列傳回值為0,即時區分鐘位移量。
week函數
week函數用於計算目標日期是在一年中的第幾周。week函數等同於week_of_year函數。
文法
week(x)
參數說明
|
參數 |
說明 |
|
x |
參數值為date、timestamp類型。 |
傳回值類型
bigint類型。
樣本
使用current_timestamp函數擷取當前日期和時間,然後使用weekFunction Compute當前日期是一年中的第幾周。
-
查詢和分析語句(調試)
* | SELECT current_timestamp, week(current_timestamp) -
查詢和分析結果:_col0列返回目前時間戳,_col1列傳回值為36,即當前日期為本年第36周。
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) -
查詢和分析結果:_col0列返回目前時間戳,_col1列傳回值為36,即當前日期為本年第36周。
year函數
year函數用於提取目標日期中的年份。
文法
year(x)
參數說明
|
參數 |
說明 |
|
x |
參數值為date、timestamp類型。 |
傳回值類型
bigint類型。
樣本
使用current_timestamp函數擷取當前日期和時間,然後使用year函數提取當前日期中的年份。
-
查詢和分析語句(調試)
* | SELECT current_timestamp,year(current_timestamp) -
查詢和分析結果:_col0列返回目前時間戳,_col1列傳回值為2021,即當前年份。
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) -
查詢和分析結果:_col0列返回目前時間戳,_col1列傳回值為2021,即ISO周日曆中的年份。
yow函數
yow函數用於返回目標日期在ISO周日曆中的年份。yow函數等同於year_of_week函數。
文法
yow(x)
參數說明
|
參數 |
說明 |
|
x |
參數值為date、timestamp類型。 |
傳回值類型
bigint類型。
樣本
使用current_timestamp函數擷取當前日期和時間,然後使用yow函數返回當前日期在ISO周日曆中的年份。
-
查詢和分析語句(調試)
* | SELECT current_timestamp, yow(current_timestamp) -
查詢和分析結果:_col0列返回目前時間戳,_col1列傳回值為2021,即ISO周日曆中的年份。
時間間隔函數
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 -
查詢和分析結果如下表所示,返回了按分鐘對齊的time列、平均請求時間avg_time列和當前日期date列。
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)) -
查詢和分析結果如下表所示,返回了包含body_bytes_sent、client_ip、host、http_user_agent等欄位的昨天的日誌資料。
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 "時間差(小時)" -
查詢和分析結果:返回時間差為24小時。
時序補全函數
time_series函數
time_series函數用於補全您查詢時間視窗內缺失的資料。
time_series函數必須搭配GROUP BY文法和ORDER BY文法使用,且ORDER BY文法不支援DESC排序方式。如果是子查詢模式,time_series 外層的SQL不支援加GROUP BY和ORDER BY。
文法
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 -
查詢和分析結果如下表所示,按兩小時的時間粒紋返回了time列和對應的num列資料。
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 |
年 |