全部產品
Search
文件中心

Simple Log Service:日期和時間函數

更新時間:Nov 20, 2024

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_date

返回當前日期。

×

current_time函數

current_time

返回目前時間和時區。

×

current_timestamp函數

current_timestamp

返回當前日期、時間和時區。

×

current_timezone函數

current_timezone()

返回當前時區。

×

date函數

date(x)

返回日期和時間運算式中的日期部分。

×

date_format函數

date_format(x, format)

將timestamp類型的日期和時間運算式轉化為指定格式的日期和時間運算式。

date_parse函數

date_parse(x, format)

將日期和時間字串轉換為指定格式的timestamp類型的日期和時間運算式。

from_iso8601_date函數

from_iso8601_date(x)

將ISO8601格式的日期運算式轉化為date類型的日期運算式。

×

from_iso8601_timestamp函數

from_iso8601_timestamp(x)

將ISO8601格式的日期和時間運算式轉化為timestamp類型的日期和時間運算式。

×

from_unixtime函數

from_unixtime(x)

將UNIX時間戳記轉化為無時區的timestamp類型的日期和時間運算式。

from_unixtime(x, time zone)

將UNIX時間戳記轉化為帶時區的timestamp類型的日期和時間運算式。

×

from_unixtime(x, hours, minutes)

將UNIX時間戳記轉化為帶時區的timestamp類型的日期和時間運算式,其中hoursminutes為時區位移量。

×

localtime函數

localtime

返回本地時間。

×

localtimestamp函數

localtimestamp

返回本地日期和時間。

×

now函數

now()

返回當前日期和時間。

now函數等同於current_timestamp函數。

×

to_iso8601函數

to_iso8601(x)

將date類型或timestamp類型的日期和時間運算式轉換為ISO8601格式的日期和時間運算式。

×

to_unixtime函數

to_unixtime(x)

將timestamp類型的日期和時間運算式轉化成UNIX時間戳記。

日期和時間提取函數

day函數

day(x)

提取日期和時間運算式中的天數,按月計算。

day函數等同於day_of_month函數。

×

day_of_month函數

day_of_month(x)

提取日期和時間運算式中的天數,按月計算。

day_of_month函數等同於day函數。

×

day_of_week函數

day_of_week(x)

提取日期和時間運算式中的天數,按周計算。

day_of_week函數等同於dow函數。

day_of_year函數

day_of_year(x)

提取日期和時間運算式中的天數,按年計算。

day_of_year函數等同於doy函數。

dow函數

dow(x)

提取日期和時間運算式中的天數,按周計算。

dow函數等同於day_of_week函數。

doy函數

doy(x)

提取日期和時間運算式中的天數,按年計算。

doy函數等同於day_of_year函數。

extract函數

extract(field from x)

通過指定的field,提取日期和時間運算式中的日期或時間部分。

×

hour函數

hour(x)

提取日期和時間運算式中的小時數,按24小時制計算。

minute函數

minute(x)

提取日期和時間運算式中的分鐘數。

month函數

month(x)

提取日期和時間運算式中的月份。

quarter函數

quarter(x)

計算目標日期所屬的季度。

second函數

second(x)

提取日期和時間運算式中的秒數。

timezone_hour函數

timezone_hour(x)

計算時區的小時位移量。

×

timezone_minute函數

timezone_minute(x)

計算時區的分鐘位移量。

×

week函數

week(x)

計算目標日期是在一年中的第幾周。

week函數等同於week_of_year函數。

×

week_of_year函數

week_of_year(x)

計算目標日期是在一年中的第幾周。

week_of_year函數等同於week函數。

×

year函數

year(x)

提取目標日期中的年份。

year_of_week函數

year_of_week(x)

提取目標日期在ISO周日曆中的年份。

year_of_week函數等同於yow函數。

yow函數

yow(x)

提取目標日期在ISO周日曆中的年份。

yow函數等同於year_of_week函數。

時間間隔函數

date_trunc函數

date_trunc(unit, x)

根據您指定的時間單位截斷日期和時間運算式,並按照毫秒、秒、分鐘,小時、日、月或年對齊。

×

date_add函數

date_add(unit, N, x)

x上加上N個時間單位(unit)。

date_diff函數

date_diff(unit, x, y)

返回兩個時間運算式之間的時間差值,例如計算xy之間相差幾個時間單位(unit)。

時序補全函數

time_series函數

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_date

current_time函數

current_time函數用於返回目前時間和時區,格式為HH:MM:SS.Ms Time_zone。

文法

current_time

傳回值類型

time類型。

樣本

查詢目前時間和時區。

  • 查詢和分析語句(調試

    * | select current_time
  • 查詢和分析結果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_date

current_timezone函數

current_timezone函數用於返回當前時區。

文法

current_timezone()

傳回值類型

varchar類型。

樣本

查詢當前的時區。

  • 查詢和分析語句(調試

    * | select current_timezone()
  • 查詢和分析結果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

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_format

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 "時間差(小時)"
  • 查詢和分析結果 date_parse(

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_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)
  • 查詢和分析結果from_iso8601_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類型的日期和時間運算式,其中hoursminutes為時區位移量。

    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')
  • 查詢和分析結果from_unixtime

localtime函數

localtime函數用於返回本地時間,格式為HH:MM:SS.Ms。

文法

localtime

傳回值類型

time類型。

樣本

查詢本地時間。

  • 查詢和分析語句(調試

    * | select localtime
  • 查詢和分析結果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))
  • 查詢和分析結果current_date

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()))
  • 查詢和分析結果current_date

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_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()))
  • 查詢和分析結果current_date

day函數

day函數用於提取日期和時間運算式中的天數,按月計算。day函數等同於day_of_month函數。

文法

day(x)

參數說明

參數

說明

x

參數值為timestamp、date類型。

傳回值類型

bigint類型。

樣本

使用current_date函數擷取當前日期,然後使用day函數提取當前日期為本月的第幾天。

  • 查詢和分析語句(調試

    * | SELECT current_date, day(current_date)
  • 查詢和分析結果day

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

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_week

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)
  • 查詢和分析結果day_of_year

dow函數

dow函數用於提取日期和時間運算式中的天數,按周計算。dow函數等同於day_of_week函數。

文法

dow(x)

參數說明

參數

說明

x

參數值為timestamp、date類型。

傳回值類型

bigint類型。

樣本

使用current_date函數擷取當前日期,然後使用dow函數提取當前日期為本周的第幾天。

  • 查詢和分析語句(調試

    * | SELECT current_date, dow(current_date)
  • 查詢和分析結果day_of_week

doy函數

doy函數用於提取日期和時間運算式中的天數,按年計算。doy函數等同於day_of_year函數。

文法

doy(x)

參數說明

參數

說明

x

參數值為timestamp、date類型。

傳回值類型

bigint類型。

樣本

使用current_date函數擷取當前日期,然後使用doy函數提取當前日期為本年的第幾天。

  • 查詢和分析語句(調試

    * | SELECT current_date, doy(current_date)
  • 查詢和分析結果day_of_year

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)
  • 查詢和分析結果extract

hour函數

hour函數用於提取日期和時間運算式中的小時數,按24小時制計算。

文法

hour(x)

參數說明

參數

說明

x

參數值為timestamp類型。

傳回值類型

bigint類型。

樣本

使用current_timestamp函數擷取當前日期和時間,然後使用hour函數提取目前時間的小時數。

  • 查詢和分析語句(調試

    * | SELECT current_timestamp, hour(current_timestamp)
  • 查詢和分析結果hour

minute函數

minute函數用於提取日期和時間運算式中的分鐘數。

文法

minute(x)

參數說明

參數

說明

x

參數值為timestamp類型。

傳回值類型

bigint類型。

樣本

使用current_timestamp函數擷取當前日期和時間,然後使用minute函數提取目前時間的分鐘數。

  • 查詢和分析語句(調試

    * | SELECT current_timestamp, minute(current_timestamp)
  • 查詢和分析結果minute

month函數

month函數用於提取日期和時間運算式中的月份。

文法

month(x)

參數說明

參數

說明

x

參數值為date、timestamp類型。

傳回值類型

bigint類型。

樣本

使用current_timestamp函數擷取當前日期和時間,然後使用month函數提取當前日期所屬的月份。

  • 查詢和分析語句(調試

    * | SELECT current_timestamp, month(current_timestamp)
  • 查詢和分析結果month

quarter函數

quarter函數用於返回日期所屬的季度。

文法

quarter(x)

參數說明

參數

說明

x

參數值為date、timestamp類型。

傳回值類型

bigint類型。

樣本

使用current_timestamp函數擷取當前日期和時間,然後使用quarterFunction Compute當前日期所屬的季度。

  • 查詢和分析語句(調試

    * | SELECT current_timestamp,quarter(current_timestamp)
  • 查詢和分析結果quarter

second函數

second函數用於提取日期和時間運算式中的秒數。

文法

second(x)

參數說明

參數

說明

x

參數值為timestamp類型。

傳回值類型

bigint類型。

樣本

使用current_timestamp函數擷取當前日期和時間,然後使用second函數提取目前時間的秒數。

  • 查詢和分析語句(調試

    * | SELECT current_timestamp,second(current_timestamp)
  • 查詢和分析結果second

timezone_hour函數

timezone_hour函數用於計算時區的小時位移量。

文法

timezone_hour(x)

參數說明

參數

說明

x

參數值為timestamp類型。

傳回值類型

bigint類型。

樣本

使用current_timestamp函數擷取當前日期和時間,然後使用timezone_hourFunction Compute目前時間所屬時區的小時位移量。

  • 查詢和分析語句(調試

    * | SELECT current_timestamp, timezone_hour(current_timestamp)
  • 查詢和分析結果timezone_hour

timezone_minute函數

timezone_minute函數用於計算時區的分鐘位移量。

文法

timezone_minute(x)

參數說明

參數

說明

x

參數值為timestamp類型。

傳回值類型

bigint類型。

樣本

使用current_timestamp函數擷取當前日期和時間,然後使用timezone_minuteFunction Compute目前時間所屬時區的分鐘位移量。

  • 查詢和分析語句(調試

    * | SELECT current_timestamp,timezone_minute(current_timestamp)
  • 查詢和分析結果timezone_minute

week函數

week函數用於計算目標日期是在一年中的第幾周。week函數等同於week_of_year函數。

文法

week(x)

參數說明

參數

說明

x

參數值為date、timestamp類型。

傳回值類型

bigint類型。

樣本

使用current_timestamp函數擷取當前日期和時間,然後使用weekFunction Compute當前日期是一年中的第幾周。

  • 查詢和分析語句(調試

    * | SELECT current_timestamp, week(current_timestamp)
  • 查詢和分析結果week

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)
  • 查詢和分析結果week

year函數

year函數用於提取目標日期中的年份。

文法

year(x)

參數說明

參數

說明

x

參數值為date、timestamp類型。

傳回值類型

bigint類型。

樣本

使用current_timestamp函數擷取當前日期和時間,然後使用year函數提取當前日期中的年份。

  • 查詢和分析語句(調試

    * | SELECT current_timestamp,year(current_timestamp)
  • 查詢和分析結果year

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)
  • 查詢和分析結果year_of_week

yow函數

yow函數用於返回目標日期在ISO周日曆中的年份。yow函數等同於year_of_week函數。

文法

yow(x)

參數說明

參數

說明

x

參數值為date、timestamp類型。

傳回值類型

bigint類型。

樣本

使用current_timestamp函數擷取當前日期和時間,然後使用yow函數返回當前日期在ISO周日曆中的年份。

  • 查詢和分析語句(調試

    * | SELECT current_timestamp, yow(current_timestamp)
  • 查詢和分析結果year_of_week

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_trunc

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))
  • 查詢和分析結果current_date

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 "時間差(小時)"
  • 查詢和分析結果date_diff

time_series函數

time_series函數用於補全您查詢時間視窗內缺失的資料。

重要

time_series函數必須搭配GROUP BY文法和ORDER BY文法使用,且ORDER BY文法不支援DESC排序方式。

文法

time_series(x, window_time, format, padding_data)

參數說明

參數

說明

x

時間列,例如__time__。時間列的值為long類型或timestamp類型。

window_time

視窗大小,單位為s(秒)、m(分)、h(小時)、d(天)。例如2h、5m、3d。

format

返回結果的時間格式。更多資訊,請參見format說明

padding_data

補全的內容。包括:

  • 0:將缺失的值設定為0。

  • null:將缺失的值設定為null。

  • last:將缺失的值設定為上一個時間點對應的值。

  • next:將缺失的值設定為下一個時間點對應的值。

  • avg:將缺失的值設定為前後兩個時間點的平均值。

傳回值類型

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小時制,格式為hh:mm:ss AM/PM

%S

秒。取值範圍為00~59。

%s

秒。取值範圍為00~59。

%f

微秒。取值範圍為000000~999999。

%T

時間。24小時制,格式為hh:mm:ss

%v

每年的第幾周,星期一是一周的第一天。取值範圍為01~53。

%W

星期幾的名稱。例如Sunday、Saturday。

%Y

4位元的年份。例如2020。

%y

2位元的年份。例如20。

%%

%的逸出字元。

unit說明

unit

說明

millisecond

毫秒

second

minute

分鐘

hour

小時

day

week

month

quarter

季度

year