以下内容来自 TDengine 官方文档 及
GitHub 内容 。以下所有示例基于 TDengine 3.1.0.3
TDengine函数大全
1.数学函数
2.字符串函数
3.转换函数
4.时间和日期函数
5.聚合函数
6.选择函数
7.时序数据库特有函数
8.系统函数
转换函数
- TDengine函数大全
- CAST
- TO_ISO8601
- TO_UNIXTIMESTAMP
- TO_JSON
CAST
CAST(expr AS type_name)
功能说明:数据类型转换函数,返回 expr 转换为 type_name 指定的类型后的结果。只适用于 select 子句中。
返回结果类型:CAST 中指定的类型(type_name)。
适用数据类型:输入参数 expression 的类型可以是除JSON外的所有类型。
嵌套子查询支持:适用于内层查询和外层查询。
适用于: 表和超级表。
使用说明:
- 对于不能支持的类型转换会直接报错。
- 对于类型支持但某些值无法正确转换的情况,对应的转换后的值以转换函数输出为准。目前可能遇到的几种情况:
1)字符串类型转换数值类型时可能出现的无效字符情况,例如"a"可能转为0,但不会报错。
2)转换到数值类型时,数值大于type_name可表示的范围时,则会溢出,但不会报错。
3)转换到字符串类型时,如果转换后长度超过type_name中指定的长度,则会截断,但不会报错。
示例:
> desc t3;field | type | length | note |
===============================================================================================ts | TIMESTAMP | 8 | |v1 | INT | 4 | |v2 | FLOAT | 4 | |v3 | DOUBLE | 8 | |v4 | NCHAR | 100 | |> select * from t3;ts | v1 | v2 | v3 | v4 |
======================================================================================================================================2023-08-31 08:56:14.567 | 1 | 2.2000000 | 3.333333333333000 | ABCDEFG |> select ts,cast(v1 as float) from t3;ts | cast(v1 as float) |
=================================================2023-08-31 08:56:14.567 | 1.0000000 |> select ts,cast(v3 as float) from t3;ts | cast(v3 as float) |
=================================================2023-08-31 08:56:14.567 | 3.3333333 |> select ts,cast(v4 as float) from t3;ts | cast(v4 as float) |
=================================================2023-08-31 08:56:14.567 | 0.0000000 |taos> select ts,cast(v4 as binary) from t3;> select ts,cast(v4 as binary(100)) from t3;ts | cast(v4 as binary(100)) |
=====================================================================2023-08-31 08:56:14.567 | ABCDEFG |> select ts,cast(v1 as binary(100)) from t3;ts | cast(v1 as binary(100)) |
=====================================================================2023-08-31 08:56:14.567 | 1 |> select ts,cast(v2 as binary(100)) from t3;ts | cast(v2 as binary(100)) |
=====================================================================2023-08-31 08:56:14.567 | 2.200000 |> select ts,cast(v3 as binary(100)) from t3;ts | cast(v3 as binary(100)) |
=====================================================================2023-08-31 08:56:14.567 | 3.333333 |> select ts,cast(v3 as binary(2)) from t3;ts | cast(v3 as binary(2)) |
==================================================2023-08-31 08:56:14.567 | 3. |> select ts,cast(v4 as binary(2)) from t3;ts | cast(v4 as binary(2)) |
==================================================2023-08-31 08:56:14.567 | AB |
TO_ISO8601
TO_ISO8601(expr [, timezone])
功能说明:将 UNIX 时间戳转换成为 ISO8601 标准的日期时间格式,并附加时区信息。timezone 参数允许用户为输出结果指定附带任意时区信息。如果 timezone 参数省略,输出结果则附带当前客户端的系统时区信息。
返回结果数据类型:VARCHAR 类型。
适用数据类型:INTEGER, TIMESTAMP。
嵌套子查询支持:适用于内层查询和外层查询。
适用于: 表和超级表。
使用说明:
- timezone 参数允许输入的时区格式为: [z/Z, +/-hhmm, +/-hh, +/-hh:mm]。例如,TO_ISO8601(1, “+00:00”)。
- 如果输入是表示 UNIX 时间戳的整形,返回格式精度由时间戳的位数决定;
- 如果输入是 TIMESTAMP 类型的列,返回格式的时间戳精度与当前 DATABASE 设置的时间精度一致。
- 如果输入的是 ISO8601 类型,返回时间不会转换,只会在后面添加 TIMEZONE。
示例: 见 to_unixtimestamp
TO_UNIXTIMESTAMP
TO_UNIXTIMESTAMP(expr [, return_timestamp])return_timestamp: {0| 1
}
功能说明:将日期时间格式的字符串转换成为 UNIX 时间戳。
返回结果数据类型:BIGINT, TIMESTAMP。
应用字段:VARCHAR, NCHAR。
嵌套子查询支持:适用于内层查询和外层查询。
适用于:表和超级表。
使用说明:
- 输入的日期时间字符串须符合 ISO8601/RFC3339 标准,无法转换的字符串格式将返回 NULL。
- 返回的时间戳精度与当前 DATABASE 设置的时间精度一致。
- return_timestamp 指定函数返回值是否为时间戳类型,设置为1时返回 TIMESTAMP 类型,设置为0时返回 BIGINT 类型。如不指定缺省返回 BIGINT 类型。
- restur_timestamp 为 0 时,返回的时间默认为已当前系统配置时区。
示例:
> show variables;name | value | scope |
=========================================================================================statusInterval | 1 | server |timezone | Asia/Shanghai (CST, +0800) | both |locale | en_US.UTF-8 | both |charset | UTF-8 | both |> select ts from t3;ts |
==========================2023-08-31 08:56:14.567 |> select to_iso8601(ts) from t3;to_iso8601(ts) |
===========================================2023-08-31T08:56:14.567+0800 |> select to_iso8601(ts,'+00:00') from t3;to_iso8601(ts,'+00:00') |
===========================================2023-08-31T08:56:14.567+00:00 |> select to_unixtimestamp(to_iso8601(ts)) from t3;to_unixtimestamp(to_iso8601(ts)) |
===================================1693443374567 |> select to_unixtimestamp(to_iso8601(ts,'+00:00')) from t3;to_unixtimestamp(to_iso8601(ts,'+00:00')) |
============================================1693472174567 |> select to_iso8601(to_unixtimestamp(to_iso8601(ts,'+00:00'))) from t3;to_iso8601(to_unixtimestamp(to_iso8601(ts,'+00:00'))) |
========================================================2023-08-31T16:56:14.567+0800 |> select to_unixtimestamp(to_iso8601(ts,'+00:00'),0) from t3;to_unixtimestamp(to_iso8601(ts,'+00:00'),0) |
==============================================1693472174567 |> select to_unixtimestamp(to_iso8601(ts,'+00:00'),1) from t3;to_unixtimestamp(to_iso8601(ts,'+00:00'),1) |
==============================================2023-08-31 16:56:14.567 |
TO_JSON
TO_JSON(str_literal)
功能说明: 将字符串常量转换为 JSON 类型。
返回结果数据类型: JSON。
适用数据类型: JSON 字符串,形如 ‘{ “literal” : literal }’。'{}'表示空值。键必须为字符串字面量,值可以为数值字面量、字符串字面量、布尔字面量或空值字面量。str_literal中不支持转义符。
嵌套子查询支持:适用于内层查询和外层查询。
适用于: 表和超级表。
示例:
> select ts, to_json('{"values":100,"tag":"voltage"}') from t3;ts | to_json('{"values":100,"tag":"voltage"}') |
======================================================================2023-08-31 08:56:14.567 | {"tag":"voltage","values":100} |