SQL语法

日志服务 BLS

  • 功能发布记录
  • 产品描述
    • 产品介绍
    • 使用限制
  • 产品定价
  • 快速入门
    • 简介
    • 安装收集器
    • 创建日志集
    • 创建传输任务
    • 日志分析和报警
    • 创建投递任务
    • 创建日志集
    • 简介
    • 日志分析和报警
    • 创建投递任务
    • 创建传输任务
    • 安装收集器
  • 操作指南
    • 百度智能云环境准备
    • 概览
    • 收集器
      • 主机安装收集器
      • 在k8s环境安装收集器
      • 设置收集器启动参数
      • 收集器管理
      • 收集器发行版本
    • 查询分析
      • 日志查询
      • 检索语法
      • SQL语法
    • 日志采集
      • 传输任务采集
        • 管理传输任务
        • 创建传输任务
      • 使用Kafka协议上传日志
    • 日志管理
      • 日志集管理
      • 日志视图
    • 仪表盘
      • 概述
      • 管理仪表盘
      • 管理仪表盘图表
    • 报警管理
      • 报警概述
      • 报警策略
        • 管理报警策略
        • 触发条件
      • 报警通知
        • 报警通知模版
        • 报警回调
      • 报警执行统计
      • 报警历史
    • 数据处理
      • 定时SQL分析
        • 创建定时SQL分析任务
        • 管理定时SQL分析任务
      • 日志投递
        • 日志投递概述
        • 创建投递任务
        • 管理投递任务
      • 数据加工
        • 数据加工函数总览
        • 事件操作函数
        • 字段值提取函数
        • 字段操作函数
        • 映射富化函数
        • 流程控制函数
      • 实时消费
    • 日志应用
      • 智能诊断
    • 多用户访问控制
  • 开发指南
    • API参考
      • API概述
      • 通用说明
      • 名词解释
      • 接口概览
      • 通用错误码
      • 服务域名
      • API功能发布记录
      • 日志组Project相关接口
        • 创建日志组CreateProject
        • 更新日志组UpdateProject
        • 删除日志组DeleteProject
        • 获取日志组列表ListProject
        • 获取日志组详情DescribeProject
      • 日志集LogStore相关接口
        • 创建日志集CreateLogStore
        • 修改日志集UpdateLogStore
        • 删除日志集DeleteLogStore
        • 获取日志集列表ListLogStore
        • 获取日志集详情DescribeLogStore
        • 批量获取日志集BatchGetLogStore
      • 日志流LogStream相关接口
        • 获取日志流列表ListLogStream
      • 日志记录LogRecord相关接口
        • 检索分析日志QueryLogRecord
        • 直方图接口QueryLogHistogram
        • 推送日志PushLogRecord
        • 获取日志记录PullLogRecord
      • 日志视图相关接口
        • 创建日志视图CreateLogStoreView
        • 修改日志视图UpdateLogStoreView
        • 删除日志视图DeleteLogStoreView
        • 获取日志视图列表ListLogStoreView
        • 获取日志视图详情DescribeLogStoreView
      • 下载日志Download相关接口
        • 创建下载任务CreateDownloadTask
        • 删除下载任务DeleteDownloadTask
        • 获取下载任务列表ListDownloadTask
        • 获取下载任务地址GetDownloadTaskLink
        • 获取下载任务详情DescribeDownloadTask
      • 快速查询FastQuery相关接口
        • 创建快速查询CreateFastQuery
        • 更新快速查询UpdateFastQuery
        • 删除快速查询DeleteFastQuery
        • 获取快速查询列表ListFastQuery
        • 获取快速查询详情DescribeFastQuery
      • 传输任务Task相关接口
        • 创建传输任务CreateTask
        • 更新传输任务UpdateTask
      • 报警Alarm相关接口
        • 创建报警策略CreateAlarmPolicy
        • 启用报警策略EnableAlarmPolicy
        • 获取报警历史详情DescribeAlarmRecord
        • 更新报警策略UpdateAlarmPolicy
        • 删除报警策略DeleteAlarmPolicy
        • 获取报警执行列表ListAlarmExecutions
        • 获取报警策略列表ListAlarmPolicy
        • 获取报警策略详情DescribeAlarmPolicy
        • 获取报警执行统计ListAlarmExecutionStats
        • 检验报警策略执行条件ValidateAlarmCondition
        • 禁用报警策略DisableAlarmPolicy
        • 获取报警历史列表ListAlarmRecord
        • 检验报警策略查询语句ValidateAlarmPolicySQL
      • 日志投递LogShipper相关接口
        • 创建日志投递CreateLogShipper
        • 更新日志投递UpdateLogShipper
        • 删除日志投递任务DeleteSingleLogShipper
        • 批量设置日志投递任务状态BulkSetLogShipperStatus
        • 设置日志投递任务状态SetSingleLogShipperStatus
        • 获取日志投递记录ListLogShipperRecord
        • 批量删除日志投递任务BulkDeleteLogShipper
        • 获取日志投递列表ListLogShipper
        • 获取日志投递详情GetLogShipper
      • 日志集模板相关接口
        • 创建日志集模板CreateLogStoreTemplate
        • 更新日志集模板UpdateLogStoreTemplate
        • 删除日志集模板DeleteLogStoreTemplates
        • 获取日志集模板列表DescribeLogStoreTemplates
        • 获取日志集模板详情DescribeLogStoreTemplate
      • 索引Index相关接口
        • 创建索引CreateIndex
        • 更新索引UpdateIndex
        • 删除索引DeleteIndex
        • 获取索引详情DescribeIndex
      • 兼容Elasticsearch相关接口
        • 检索和分析BLS日志 AsyncSearch
        • 查询索引列表 ResolveIndex
        • 推荐字段取值 TermsEnum
        • 获取索引字段列表 FieldCaps
    • SDK参考
      • SDK隐私政策
      • SDK开发者个人信息保护合规指引
      • Android & ISO SDK下载
      • Go SDK
        • 概述
        • 初始化
        • 安装SDK工具包
        • Project操作
        • 日志集LogStore操作
        • 日志流LogStream操作
        • 日志记录LogRecord操作
        • 日志投递LogShipper操作
        • 快速查询FastQuery操作
        • 下载任务操作
        • 索引Index操作
        • 版本发布记录
      • iOS SDK
        • 概述
        • 快速开始
        • 版本发布记录
      • Java SDK
        • 概述
        • 日志记录LogRecord操作
        • 安装SDK工具包
      • Android SDK
        • 概述
        • 快速开始
        • 版本发布记录
    • 导入SLS采集配置
  • 最佳实践
    • 使用同环比作为报警触发条件
    • 通过Grafana使用BLS
    • 使用Grafana访问日志服务的Elasticsearch兼容接口
    • BLS接入Kibana
  • 常见问题
    • 常见问题总览
    • 配置类问题
    • 故障类问题
  • 日志服务等级协议SLA
所有文档
menu
没有找到结果,请重新输入

日志服务 BLS

  • 功能发布记录
  • 产品描述
    • 产品介绍
    • 使用限制
  • 产品定价
  • 快速入门
    • 简介
    • 安装收集器
    • 创建日志集
    • 创建传输任务
    • 日志分析和报警
    • 创建投递任务
    • 创建日志集
    • 简介
    • 日志分析和报警
    • 创建投递任务
    • 创建传输任务
    • 安装收集器
  • 操作指南
    • 百度智能云环境准备
    • 概览
    • 收集器
      • 主机安装收集器
      • 在k8s环境安装收集器
      • 设置收集器启动参数
      • 收集器管理
      • 收集器发行版本
    • 查询分析
      • 日志查询
      • 检索语法
      • SQL语法
    • 日志采集
      • 传输任务采集
        • 管理传输任务
        • 创建传输任务
      • 使用Kafka协议上传日志
    • 日志管理
      • 日志集管理
      • 日志视图
    • 仪表盘
      • 概述
      • 管理仪表盘
      • 管理仪表盘图表
    • 报警管理
      • 报警概述
      • 报警策略
        • 管理报警策略
        • 触发条件
      • 报警通知
        • 报警通知模版
        • 报警回调
      • 报警执行统计
      • 报警历史
    • 数据处理
      • 定时SQL分析
        • 创建定时SQL分析任务
        • 管理定时SQL分析任务
      • 日志投递
        • 日志投递概述
        • 创建投递任务
        • 管理投递任务
      • 数据加工
        • 数据加工函数总览
        • 事件操作函数
        • 字段值提取函数
        • 字段操作函数
        • 映射富化函数
        • 流程控制函数
      • 实时消费
    • 日志应用
      • 智能诊断
    • 多用户访问控制
  • 开发指南
    • API参考
      • API概述
      • 通用说明
      • 名词解释
      • 接口概览
      • 通用错误码
      • 服务域名
      • API功能发布记录
      • 日志组Project相关接口
        • 创建日志组CreateProject
        • 更新日志组UpdateProject
        • 删除日志组DeleteProject
        • 获取日志组列表ListProject
        • 获取日志组详情DescribeProject
      • 日志集LogStore相关接口
        • 创建日志集CreateLogStore
        • 修改日志集UpdateLogStore
        • 删除日志集DeleteLogStore
        • 获取日志集列表ListLogStore
        • 获取日志集详情DescribeLogStore
        • 批量获取日志集BatchGetLogStore
      • 日志流LogStream相关接口
        • 获取日志流列表ListLogStream
      • 日志记录LogRecord相关接口
        • 检索分析日志QueryLogRecord
        • 直方图接口QueryLogHistogram
        • 推送日志PushLogRecord
        • 获取日志记录PullLogRecord
      • 日志视图相关接口
        • 创建日志视图CreateLogStoreView
        • 修改日志视图UpdateLogStoreView
        • 删除日志视图DeleteLogStoreView
        • 获取日志视图列表ListLogStoreView
        • 获取日志视图详情DescribeLogStoreView
      • 下载日志Download相关接口
        • 创建下载任务CreateDownloadTask
        • 删除下载任务DeleteDownloadTask
        • 获取下载任务列表ListDownloadTask
        • 获取下载任务地址GetDownloadTaskLink
        • 获取下载任务详情DescribeDownloadTask
      • 快速查询FastQuery相关接口
        • 创建快速查询CreateFastQuery
        • 更新快速查询UpdateFastQuery
        • 删除快速查询DeleteFastQuery
        • 获取快速查询列表ListFastQuery
        • 获取快速查询详情DescribeFastQuery
      • 传输任务Task相关接口
        • 创建传输任务CreateTask
        • 更新传输任务UpdateTask
      • 报警Alarm相关接口
        • 创建报警策略CreateAlarmPolicy
        • 启用报警策略EnableAlarmPolicy
        • 获取报警历史详情DescribeAlarmRecord
        • 更新报警策略UpdateAlarmPolicy
        • 删除报警策略DeleteAlarmPolicy
        • 获取报警执行列表ListAlarmExecutions
        • 获取报警策略列表ListAlarmPolicy
        • 获取报警策略详情DescribeAlarmPolicy
        • 获取报警执行统计ListAlarmExecutionStats
        • 检验报警策略执行条件ValidateAlarmCondition
        • 禁用报警策略DisableAlarmPolicy
        • 获取报警历史列表ListAlarmRecord
        • 检验报警策略查询语句ValidateAlarmPolicySQL
      • 日志投递LogShipper相关接口
        • 创建日志投递CreateLogShipper
        • 更新日志投递UpdateLogShipper
        • 删除日志投递任务DeleteSingleLogShipper
        • 批量设置日志投递任务状态BulkSetLogShipperStatus
        • 设置日志投递任务状态SetSingleLogShipperStatus
        • 获取日志投递记录ListLogShipperRecord
        • 批量删除日志投递任务BulkDeleteLogShipper
        • 获取日志投递列表ListLogShipper
        • 获取日志投递详情GetLogShipper
      • 日志集模板相关接口
        • 创建日志集模板CreateLogStoreTemplate
        • 更新日志集模板UpdateLogStoreTemplate
        • 删除日志集模板DeleteLogStoreTemplates
        • 获取日志集模板列表DescribeLogStoreTemplates
        • 获取日志集模板详情DescribeLogStoreTemplate
      • 索引Index相关接口
        • 创建索引CreateIndex
        • 更新索引UpdateIndex
        • 删除索引DeleteIndex
        • 获取索引详情DescribeIndex
      • 兼容Elasticsearch相关接口
        • 检索和分析BLS日志 AsyncSearch
        • 查询索引列表 ResolveIndex
        • 推荐字段取值 TermsEnum
        • 获取索引字段列表 FieldCaps
    • SDK参考
      • SDK隐私政策
      • SDK开发者个人信息保护合规指引
      • Android & ISO SDK下载
      • Go SDK
        • 概述
        • 初始化
        • 安装SDK工具包
        • Project操作
        • 日志集LogStore操作
        • 日志流LogStream操作
        • 日志记录LogRecord操作
        • 日志投递LogShipper操作
        • 快速查询FastQuery操作
        • 下载任务操作
        • 索引Index操作
        • 版本发布记录
      • iOS SDK
        • 概述
        • 快速开始
        • 版本发布记录
      • Java SDK
        • 概述
        • 日志记录LogRecord操作
        • 安装SDK工具包
      • Android SDK
        • 概述
        • 快速开始
        • 版本发布记录
    • 导入SLS采集配置
  • 最佳实践
    • 使用同环比作为报警触发条件
    • 通过Grafana使用BLS
    • 使用Grafana访问日志服务的Elasticsearch兼容接口
    • BLS接入Kibana
  • 常见问题
    • 常见问题总览
    • 配置类问题
    • 故障类问题
  • 日志服务等级协议SLA
  • 文档中心
  • arrow
  • 日志服务BLS
  • arrow
  • 操作指南
  • arrow
  • 查询分析
  • arrow
  • SQL语法
本页目录
  • 语法支持
  • 运算符
  • 内置函数
  • 类型转换函数
  • 聚合函数
  • 字符串函数
  • 数学函数
  • 估算函数
  • 日期时间函数
  • 基本函数
  • 时间分组函数
  • 条件函数
  • 同比环比函数
  • 附录
  • 日期格式
  • 关键字

SQL语法

更新时间:2025-11-14

目录

1.语法支持
2.运算符
3.内置函数
3.1类型转换函数
3.2聚合函数
3.3字符串函数
3.4数学函数
3.5估算函数
3.6日期时间函数
3.7条件函数
3.8同比环比函数
4.附录
4.1 日期格式
4.2 关键字

语法支持

BLS 支持基础的 SELECT 查询,具体查询语法是

SQL
1SELECT
2    select_expr [, select_expr] ...
3    [FROM subquery [AS] table_id]
4    [WHERE where_condition]
5    [GROUP BY {col_name | expr}, ... ]
6    [HAVING where_condition]
7    [ORDER BY {col_name | expr} [ASC | DESC], ...]
8    [LIMIT [offset,] row_count]

其中,where_condition 是一个执行结果为布尔值的条件表达式。不需要子查询的时候不写 FROM 子句。

字段名大小写敏感,且尽量避免使用关键字,如果使用了关键字要加反引号,例如:`action`。

运算符

一元前缀运算

操作符 示例 描述
+/- -A 改变参数的符号

二元运算

操作符 示例 描述
+ A + B 加法运算
- A - B 减法运算
* A * B 乘法运算
/ A / B 除法运算
% A % B 模数运算,结果是 A 除以 B 的余数
-> column->path json_extract()的简写,从指定列的JSON字符串中提取指定path的内容,例如 json->"$.b"

关系运算

操作符 示例 描述
= A = B 如果 A 等于 B,返回 TRUE,否则返回 FALSE。如果 A 与 B 的类型不可比较,返回 NULL
!= A != B 如果 A 不等于 B,返回 TRUE,否则返回 FALSE。如果 A 与 B 的类型不可比较,返回 NULL
> A > B 如果 A 大于 B,返回 TRUE,否则返回 FALSE。如果 A 与 B 的类型不可比较,返回 NULL
>= A >= B 如果 A 大于等于 B,返回 TRUE,否则返回 FALSE。如果 A 与 B 的类型不可比较,返回 NULL
< A < B 如果 A 小于 B,返回 TRUE,否则返回 FALSE。如果 A 与 B 的类型不可比较,返回 NULL
<= A <= B 如果 A 小于等于 B,返回 TRUE,否则返回 FALSE。如果 A 与 B 的类型不可比较,返回 NULL
[NOT] LIKE A LIKE pattern 如果 A [不]符合 pattern,返回 TRUE,否则返回 FALSE
IS [NOT] NULL A IS NULL 如果 A [不]为 NULL,返回 TRUE,否则返回 FALSE
IS [NOT] TRUE/FALSE A IS TRUE 如果 A [不]为 TRUE/FALSE,返回 TRUE,否则返回 FALSE
BETWEEN EXPR BETWEEB A AND B 如果表达式 EXPR 的值大于等于 A 且小于等于 B,则返回 TRUE,否则返回 FALSE,等价于 EXPRESSION >= A AND EXPRESSION <= B

逻辑运算

操作符 示例 描述
[NOT] IN A IN (val1, val2, ...) 如果 A [不]等于 任何一个参数值,返回 TRUE,否则返回 FALSE
AND A AND B 如果 A 和 B 都为 TRUE,返回 TRUE,否则返回 FALSE。如果 A 或 B 不是布尔类型,返回 NULL
OR A OR B 如果 A 或 B 为 TRUE,返回 TRUE,否则返回 FALSE。如果 A 或 B 不是布尔类型,返回 NULL
NOT NOT A 如果 A 为 FALSE,返回 TRUE,否则返回 FALSE。如果 A 不是布尔类型,返回 NULL

内置函数

类型转换函数

函数签名 返回值 描述 示例
cast(expr as <type>) <type> 将 expr 的值转换成 <type> 类型,<type> 支持 BIGINT, DECIMAL, VARCHAR, TIMESTAMP >select cast("123" as BIGINT)
123

聚合函数

函数签名 返回值 描述 示例
count(*),count(expr),count(DISTINCT expr) Int 计算符合条件的结果行数 >select count(*)
10
count_if(expr) Int 计算符合expr表达式为真的结果行数 >select count_if(num > 0)
10
sum(col) T 计算元素的和 >select sum(num)
983
avg(col) Double 计算元素的平均值 >select avg(num)
73.14
max(col) T 计算元素的最大值 >select max(num)
99
min(col) T 计算元素的最小值 >select min(num)
62
first(col) T 计算元素的首个值 >select first(num)
87
last(col) T 计算元素的最后一个值 >select last(num)
95
arbitrary(col) T 返回任意一个值 >select any(num)
21
bitwise_and_agg(col) Int 返回所有值按位与运算(AND)的结果 >select bitwise_and_agg(num)
1024
bitwise_or_agg(col) Int 返回所有值按位或运算(OR)的结果 >select bitwise_and_agg(num)
2047
bool_and(col) Bool 判断是组内是否所有表达式都满足条件。如果是,则返回true >select bool_and(result)
true
bool_or(col) Bool 判断是组内是否存在表达式都满足条件。如果是,则返回true >select bool_and(result)
false
checksum(col) String 计算组内元素的校验和,以base64的编码形式输出 >select checksum(x)
dGhpcyBpcyBhIHRlc3Q=
max_by(x, y) T 查询当y为最大值时对应的x值 >select max_by(x,y)
32
min_by(x,y) T 查询当y为最小值时对应的x值 >select min_by(x,y)
42

字符串函数

函数签名 返回值 描述 示例
reverse(String str) String 返回顺序反转的字符串 >select reverse("hello")
olleh
lower(String str) String 返回小写格式字符串 >select lower("fOoBaR")
foobar
upper(String str) String 返回大写格式字符串 >select upper("fOoBaR")
FOOBAR
capitalize(String str) String 返回所有单词首字母大写格式的字符串 >select upper("fOoBaR")
FOoBaR
substring(String str, Int start [, Int len]) String 返回原字符串从 start 位置开始,长度为 len 的子串。start 从 1 开始,支持负数,此时从结尾开始反向计算位置。len 参数不传表示截取到字符串结尾 >select substr("fOoBaR", 2, 4)
OoBa
>select substr("fOoBaR", -3, 2)
Ba
substr(String str, Int start [, Int len]) String substring() 的别名
replace(String str, String OLD, String NEW) String 返回 OLD 子串被替换为 NEW 子串的字符串 str >select replace("abcdef", "abc", "cba")
cbadef
length(String str) Int 返回字符串的长度 >replace("abcdef", "abc", "cba")
cbadef
chr(Int x) String 返回ASCII码对应的字母 >chr(99)
c
codepoint(char x) Int 返回字符对应的ASCII码 >codepoint('c')
99
levenshtein_distance(String x, String y) Int 返回x与y之间的最小编辑距离 >levenshtein_distance('cg', 'cdefg')
3
lpad(String x, Int length, String lpad_string) String 返回开头填充指定字符指定长度的结果字符串 >lpad('qqq',10,'p')
pppppppqqq
rpad(String x, Int length, String lpad_string) String 返回结尾填充指定字符指定长度的结果字符串 >rpad('qqq',10,'p')
qqqppppppp
ltrim(String x) String 返回删除字符串开头空格的结果字符串 >ltrim(' dhsk')
dhsk
rtrim(String x) String 返回删除字符串结尾空格的结果字符串 >rtrim('dhsk ')
dhsk
trim(String x) String 返回删除字符串结尾空格的结果字符串 >rtrim(' dhsk ')
dhsk
normalize(String x) String 返回NFC格式化的字符串 >normalize('schön')
schön
strpos(String x, String sub_string) Int 返回目标子串在字符串中的位置 >strpos('china news','news')
7
to_utf8(String x) String 返回UTF-8编码格式的字符串 >to_utf8('info')
aW5mbw==
locate(String substr, String str) Int 返回字符串 str 中 substr 的首个出现位置,如果没有则返回 0 >select locate(".", "3.14")
2
position(String substr, String str) Int locate() 的别名
concat(String A, String B...) String 返回所有参数按照传入顺序拼接成的字符串 >select concat("foo", "bar")
foobar
json_extract(String json, String path) T 从JSON字符串中提取指定path的内容 >select json_extract("{"a": 1, "b": 2}", "$.a")
1
regexp_like(String str, String regexp) Boolean 字符串是否匹配给定的正则表达式 >select regexp_like("abc", "[a-z]+")
true
regexp_extract(String str, String regexp) String 从字符串中提取出第一个符合正则表达式的子串 >select regexp_extract("abc", "[a-z]+")
abc
regexp_extract_all(String str, String regexp) Array<String> 从字符串中提取出所有符合正则表达式的子串 >select regexp_extract_all("abc22abc", "[a-z]+")
[abc,abc]

数学函数

函数签名 返回值 描述 示例
abs(Double a), abs(Int a) Double/Int 计算绝对值 >select abs(-2)
2
sqrt(Double a) Double 计算平方根 >select sqrt(100)
10
greatest(T v1, T v2, ...) T 计算参数中的最大值,如果任何一个参数是 Null,则返回 Null >select greatest(1, 3.14, -5)
3.14
least(T v1, T v2, ...) T 计算参数中的最小值,如果任何一个参数是 Null,则返回 Null >select least(1, 3.14, -5)
-5
rand() Double 返回一个0到1之间的随机数,数据集的每一行得到的随机数不同 >select rand()
0.3
ceil(Double a) Int 返回大于等于 a 且最接近 a 的整数 >select ceil(3.14)
4
floor(Double a) Int 返回小于等于 a 且最接近 a 的整数 >select floor(3.14)
3
log(Double a) Double 计算以2为底的对数值 >select log(32)
5
ln(Double a) Double 计算自然对数 >select ln(100)
4.61512051684126
pow(Double a, Double p) Double 计算 a 的 p 次方 >select pow(2, 5)
32
round(Key, n) Double 保留Key的n位小数位 >select round(200.3333, 2)
200.33

估算函数

函数签名 返回值 描述 示例
percentile(Double x, Double percentage01, Double percentage02...) Array<Double> 对x进行正序排列,返回处于percentage01、percentage02...位置的x >select percentile(latency, 0.1, 0.2)
[0.22, 0.35]

日期时间函数

基本函数

函数签名 返回值 描述 示例
now() DateTime 返回当前本地时间 >select now()
2020-01-16T08:30:50Z
current_timestamp() DateTime now() 的别名
unix_timestamp([String/DateTime date[, String format]]) Int 将日期时间字符串或 DateTime 类型数值按照 format 格式转换成 Unix timestamp。默认支持 ISO8601 格式,根据字符串中的时区解析。如果根据 format 格式解析,将使用本地时区。 >select unix_timestamp("2019-11-11T11:11:11Z")
1573470671
>select unix_timestamp("2019-11-11 11:11:11", "%Y-%m-%d %H:%i:%s")
1573441871
from_unixtime(Int unixtime[, String format]) String 将 unixtime(从 1970-01-01 00:00:00 UTC 到现在到秒数)转换成表示本地时间的字符串,默认格式为"1970-01-01 00:00:00",可以通过 format 指定字符串格式。支持的 date_format 请参考附录 >select from_unixtime(0)
1970-01-01 08:00:00
>select from_unixtime(unix_timestamp("2019-11-11T11:11:11+08:00"))
2019-11-11 11:11:11
str_to_date(String str, String format) DateTime 根据 format 解析日期时间字符串 str >select str_to_date("2019-11-11 11:11:11", "%Y-%m-%d %H:%i:%s")
2019-11-11T03:11:11Z
year(String/DateTime date) Int 返回日期 date 的年份 >select year("2019-11-07T09:09:16+08:00")
2019
quarter(String/DateTime date) Int 返回日期 date 的季度 >select quarter("2019-11-07T09:09:16+08:00")
4
month(String/DateTime date) Int 返回日期 date 的月份 >select month("2019-11-07T09:09:16+08:00")
11
day(String/DateTime date) Int dayofmonth() 的别名
hour(String/DateTime date) Int 返回日期 date 的小时 >select year("2019-11-07T09:09:16+08:00")
9
minute(String/DateTime date) Int 返回日期 date 的分钟 >select year("2019-11-07T09:09:16+08:00")
9
second(String/DateTime date) Int 返回日期 date 的秒数 >select year("2019-11-07T09:09:16+08:00")
16
weekday(String/DateTime date) Int 返回日期 date 在一星期中的位置 (0 = 星期一, 1 = 星期二, ... 6 = 星期日) >select weekday("2019-11-07T09:09:16+08:00")
3
dayofyear(String/DateTime date) Int 返回日期 date 在一年中的位置,可选值从 1 到 366 >select dayofyear("2019-11-07T09:09:16+08:00")
311
dayofmonth(String/DateTime date) Int 返回日期 date 在一个月中的位置 >select dayofmonth("2019-11-07T09:09:16+08:00")
7
dayofweek(String/DateTime date) Int 返回日期 date 在一星期中的位置 (1 = 星期日, 2 = 星期一, ... 7 = 星期六) >select dayofweek("2019-11-07T09:09:16+08:00")
5
current_timezone() String 返回当前时区 >select current_timezone()
Asia/Shanghai
current_date String 返回当前日期 >select current_timezone()
2019-11-07
extract(String unit, String/DateTime date) String 根据时间单位提取出当前日期的特定值
unit可选为"second/minute/hour/day/month/year"
>select extract("day", "2019-11-07T09:09:16+08:00")
7
date_trunc(String unit, String/DateTime date) DateTime 根据时间单位将日期截断
unit可选为"second/minute/hour/day/month/year"
>select date_trunc("day", "2019-11-07T09:09:16+08:00")
2019-11-07T00:00:00
date_diff(String unit, String/DateTime start, String/DateTime end) Int 根据时间单位,计算两个时间段之间的差值。小时/分钟/秒/日是精确值,年和月份是提取后的差值
unit可选为"second/minute/hour/day/month/year"
>select date_diff("day","2019-11-05T09:09:16+08:00","2019-11-07T09:09:16+08:00")
2
date_add(String unit, Int N, DateTime time) TimeStamp 获取time后N个时间单位unit得到的时间
unit可选为"second/minute/hour/day/month/year"
>select date_add('day', 2 ,cast('2025-08-15T19:28:42Z+08:00' as timestamp))
2025-08-17 19:28:42.000
localtime() String 获取当前时间(HH:MM:SS) >select localtime()
10:09:33
date(String/DateTime time) String 获取对应日期(yy-mm-dd) >select date("2019-11-05T09:09:16+08:00")
2019-11-05
from_iso8601_timestamp(String time) String 将ISO8601格式的日期和时间表达式转化为timestamp类型且包含时区的表达式 >select from_iso8601_timestamp("2019-11-05T09:09:16+08:00")
2019-11-05 09:09:16 Asia/Shanghai
from_iso8601_date(String time) String 将ISO8601格式的日期表达式转化为只包含年月日的字符串 >select from_iso8601_date("2019-11-05T09:09:16+08:00")
2019-11-05

时间分组函数

函数描述:持按固定时间间隔对日志数据进行分组聚合统计,例如统计每5分钟的访问次数等场景

函数格式:histogram(time_column, interval)

参数说明:

参数 说明
time_column 时间列(KEY),例如 @timestamp,该列的值必须为毫秒的 long 类型 unix 时间戳或 timestamp 类型的日期时间表达式。如果时间列不符合上述要求,可以使用 cast 函数将 ISO8601 格式的时间字符串转换为 timestamp 类型,例如cast('2020-08-19T03:18:29.000Z' as timestamp)
注意:时间列使用 timestamp 时,其对应的日期时间表达式需要为 UTC+0 时区。如果日期时间表达式本身为其他时区,需通过计算调整为 UTC+0 时区。例如原始时间为北京时间(UTC+8)时,使用cast('2020-08-19T03:18:29.000Z' as timestamp) - interval 8 hour进行调整。
interval 固定时间间隔,支持单位为 second(秒)、minute(分)、hour(小时)、day(天)、week(周)、month(月)。例如时间间隔5分钟,即 interval 5 minute。

示例:

统计每5分钟访问次数 PV 值:select histogram(cast(@timestamp as timestamp),interval 5 minute) as t,count(*) group by t order by t

条件函数

函数签名 返回值 描述 示例
if(Boolean testCondition, T valueTrue, T valueFalseOrNull) T 如果测试条件为 true,返回 ValueTrue,否则返回 ValueFalseOrNull >select if(2>1, 1, 0)
1
nullif(T a, T b) T 如果 a = b,返回 Null,否则返回 a >select nullif(1, 1)
null
coalesce(T v1, T v2, ...) T 返回第一个不是 Null 的值,如果参数都是 Null,返回 Null >select coalesce(null, 0, false, 1)
0
CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END T 如果 a = b,返回 c;如果 a = d,返回 e;否则返回 f >select case substring("abc", 1, 1) when "a" then "a" when "b" then "b" else "c" end
a
CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END T 如果 a = true,返回 b;如果 c = true,返回 d;否则返回 e >select case when substring("abc", 1, 1) = "a" then "a" when 2 > 1 then "b" else "c" end
a

同比环比函数

函数签名 返回值 描述 示例
compare(x, t1, t2...) array<float> 对比当前时间窗口内的计算结果与t1, t2.....秒之前时间窗口的计算结果。
返回值格式为[当前计算结果, t秒前的计算结果, 当前计算结果与T秒前计算结果的比值]。
>select compare(x, 3600) from (
select avg(latency) as x
)
[0.3,0.6,0.5]
ts_compare(x,t1, t2...) array<float> 在应用时间戳的情况下,对比当前时间窗口内的计算结果与t1, t2.....秒之前时间窗口的计算结果。
返回值格式为[当前计算结果, t秒前的计算结果, 当前计算结果与T秒前计算结果的比值]。
对应时间窗口t1(如3600)的的计算结果的分组时间戳(如2019-11-01 10:00),会自动补齐时间至(2019-11-01 11:00)与当前的时间戳在一起计算比值
>select time, ts_compare(x, 3600) from (
select time, avg(latency) as x group by time
)
2019-11-01 12:00,[0.4,0.2,2]
2019-11-01 11:00, [0.3,0.6,0.5]

附录

日期格式

时间函数支持的 date_format

占位符 描述
%a Abbreviated weekday name (Sun..Sat)
%b Abbreviated month name (Jan..Dec)
%c Month, numeric (0..12)
%D Day of the month with English suffix (0th, 1st, 2nd, 3rd, …)
%d Day of the month, numeric (00..31)
%e Day of the month, numeric (0..31)
%f Microseconds (000000..999999)
%H Hour (00..23)
%h Hour (01..12)
%I Hour (01..12)
%i Minutes, numeric (00..59)
%j Day of year (001..366)
%k Hour (0..23)
%l Hour (1..12)
%M Month name (January..December)
%m Month, numeric (00..12)
%p AM or PM
%r Time, 12-hour (hh:mm:ss followed by AM or PM)
%S Seconds (00..59)
%s Seconds (00..59)
%T Time, 24-hour (hh:mm:ss)
%W Weekday name (Sunday..Saturday)
%w Day of the week (0=Sunday..6=Saturday)
%Y Year, numeric, four digits
%y Year, numeric (two digits)
%% A literal % character

关键字

#

_binary
_utf8mb4

A - F

accessible action add against all alter analyze and as asc asensitive auto_increment before begin between bigint binary bit blob bool boolean both by call cascade case cast change char character charset check collate collation column columns comment commit committed condition constraint continue convert create cross current_date current_time current_timestamp current_user cursor database databases date datetime day_hour day_microsecond day_minute day_second dec decimal declare default delayed delete desc describe descriptor deterministic distinct distinctrow div double drop duplicate each else elseif enclosed end engines enum escape escaped exists exit expansion explain false fetch fields float float4 float8 flush for force foreign from full fulltext

G - N

generated geometry geometrycollection get global grant group group_concat having high_priority hour_microsecond hour_minute hour_second if ignore in index infile inner inout insensitive insert int int1 int2 int3 int4 int8 integer interval into io_after_gtids is isolation iterate join json json_extract key key_block_size keys kill language last_insert_id leading leave left less level like limit linear lines linestring load localtime localtimestamp lock long longblob longtext loop low_priority master_bind match maxvalue mediumblob mediumint mediumtext middleint minute_microsecond minute_second mod mode modifies multilinestring multipoint multipolygon names natural nchar next no no_write_to_binlog not null numeric

O - S

off offset on only optimize optimizer_costs option optionally or order out outer outfile partition plugins point polygon precision primary procedure processlist query read read_write reads real references regexp release rename reorganize repair repeat repeatable replace require resignal restrict return revoke right rlike rollback schema schemas second_microsecond select sensitive separator serializable session set share show signal signed smallint spatial specific sql sql_big_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting status stored straight_join stream string substr substring

T - Z

table tables terminated text than then time timestamp timestampadd timestampdiff tinyblob tinyint tinytext to trailing transaction trigger true truncate uncommitted undo union unique unlock unsigned update usage use using utc_date utc_time utc_timestamp values varbinary varchar varcharacter variables varying view vindex vindexes virtual vitess_keyspaces vitess_shards vitess_tablets vitess_target vschema vschema_tables warnings when where while with write xor year year_month zerofill

上一篇
检索语法
下一篇
日志采集