主页

索引

模块索引

搜索页面

时间相关

日期时间类型:

unixtime: 以int类型表示从1970年1月1日开始的秒数,例如1512374067
  表示的时间是Mon Dec 4 15:54:27 CST 2017。
  日志服务每条日志中内置的时间__time__即这种类型。
timestamp类型: 以字符串形式表示时间,例如2017-11-01 13:30:00。

日期函数

current_date    当天日期。   *| select current_date
current_time    当前时间
current_timestamp   结合current_date 和current_time的结果
current_timezone()  返回时区
from_unixtime(unixtime) 把unix时间转化为时间戳
from_unixtime(unixtime,string)  以string为时区,把unixtime转化成时间戳。 如:
            *| select from_unixtime(1494985275,'Asia/Shanghai')
localtime   本地时间
localtimestamp  本地时间戳
now()   等同于current_timestamp。   -
to_unixtime(timestamp)  timestamp转化成unixtime。   如:
        *| select to_unixtime('2017-05-17 09:45:00.848 Asia/Shanghai')

// @todo
from_iso8601_timestamp(string)  把iso8601时间转化成带时区的时间。如:
    * | select from_iso8601_date("2019-05-03T17:30:08+08:00")
from_iso8601_date(string)   把iso8601转化成天

时间函数

date_format(timestamp, format)  把timestamp转化成以format形式表示。
date_parse(string, format)  把string以format格式解析,转化成timestamp。

如:
    * | select date_format (
        date_parse('2017-05-17 09:45:00','%Y-%m-%d %H:%i:%S'),
        '%Y-%m-%d')
   * |select date_format (
        date_parse(time,'%Y-%m-%d %H:%i:%S'),
      '%Y-%m-%d')
Logtail支持的常见日志时间格式

支持格式

说明

示例

%a

星期的缩写

Fri

%A

星期的全称

Friday

%b

月份的缩写

Jan

%B

月份的全称

January

%d

每月第几天;十进制格式;范围为01~31

07;31

%e

每月第几天;十进制格式;范围为1~31个位数字加空格

7;31

%h

月份的缩写;与%b相同

Jan

%H

小时;24小时制

22

%I

小时;12小时制

11

%m

月份;十进制格式

08

%M

分钟;十时制格式;范围为00~59

59

%n

换行符

换行符

%p

本地的AM(上午)或PM(下午)

AM/PM

%r

12小时制的时间组合;与%I:%M:%S %p相同

11:59:59 AM

%R

小时和分钟组合;与%H:%M相同

23:59

%S

秒数;十进制;范围为00~59

59

%t

TAB符

TAB符

%y

年份;十进制;不带世纪;范围为00~99

04;98

%Y

年份;十进制

2004;1998

%C

十进制世纪;范围为00~99

16

%j

一年天数的十进制表示;范围为00~366

365

%u

星期的十进制表示;范围为1~7;1 表示周一

2

%U

每年的第几周;星期天是一周的开始范围为00~53

23

%V

每年的第几周;星期一是一周的开始;范围为01~53

24

%w

星期几;十进制格式 ;范围为0~6;0代表周日

5

%W

每年的第几周;星期一是一周的开始范围为00~53

23

%c

标准的日期、时间

%x

标准的日期

%X

标准的时间

%s

Unix时间戳

1476187251

时间段对齐函数

date_trunc(unit, x)
x 可以是一个timestamp类型,也可以是unix time。

Unit        转化后结果
======      ===============
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

date_trunc只能在按照一些固定时间间隔统计,如果需要按照灵活的时间维度进行统计(例如统计每5分钟数据),需要按照数学取模方法进行GROUP BY:

% 上述公式中的%300表示按照5分钟进行取模对齐
* | SELECT
    count(1) as pv,  __time__ - __time__% 300 as minute5
  group by minute5 limit 100

以下为使用时间格式的一个综合样例:

*|select  date_trunc('minute' ,  __time__)  as t,
   truncate (avg(latency) ) ,
   current_date
   group by   t
   order by t  desc
   limit 60

时间间隔函数

时间间隔函数用来执行时间段相关的运算,如在日期中添加或减去指定的时间间隔、计算两个日期之间的时间:

date_add(unit, value, timestamp)
  在timestamp上加上value个unit。如果要执行减法,value使用负值。 如:
    date_add('day', -7, '2018-08-09 00:00:00') 表示8月9号之前7天
date_diff(unit, timestamp1, timestamp2)
  表示timestamp1和timestamp2之间相差几个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       季度,即三个月
year          年

时序补全函数

时序补全函数time_series用于处理某些时间缺少的情况:

% 函数格式:
time_series(time_column, window, format, padding_data)
% 参数说明:
参数            说明
======        ========
time_column   时间列,例如日志服务提供的默认时间字段__time__
                格式为long类型或timestamp类型。
window        窗口大小,由一个数字和单位组成。单位:
                s(秒)、m(分)、H (小时)、或d(天)。例如2h、5m、3d。
format        MySQL时间格式,表示最终输出的格式。
padding_data  表示补全的内容,包括:
                0:补零。
                null:补null。
                last:补上一个值。
                next:补下一个值。
                avg:补前后的平均值。

按照每两个小时进行格式化:

* | select
    time_series(__time__, '2h', '%Y-%m-%d %H:%i:%s', '0')  as stamp,
    count(*) as num
  from log
  group by stamp
  order by stamp
Logtail支持的常见日志时间格式

日志时间格式

示例

时间表达式

自定义

2017-12-11 15:05:07

%Y-%m-%d %H:%M:%S

自定义

[2017-12-11 15:05:07.012]

[%Y-%m-%d %H:%M:%S]

RFC822

01 Jan 06 15:04 MST

%d %b %y %H:%M

RFC822Z

02 Jan 06 15:04 -0700

%d %b %y %H:%M

RFC850

Monday

02-Jan-06 15:04:05 MST

%A

%d-%b-%y %H:%M:%S

RFC1123

Mon

02 Jan 2006 15:04:05 MST

%A

%d-%b-%y %H:%M:%S

RFC3339

2006-01-02T15:04:05Z07:00

%Y-%m-%dT%H:%M:%S

RFC3339Nano

2006-01-02T15:04:05.999999999Z07:00

%Y-%m-%dT%H:%M:%S

主页

索引

模块索引

搜索页面