TDengine SQL 函数

打印 上一主题 下一主题

主题 981|帖子 981|积分 2943


  • 单行函数

    • 数学函数

      • ABS
      • ACOS
      • ASIN
      • ATAN
      • CEIL
      • COS
      • DEGREES
      • EXP
      • FLOOR
      • GREATEST
      • LEAST
      • LN
      • LOG
      • MOD
      • PI
      • POW
      • RADIANS
      • RAND
      • ROUND
      • SIGN
      • SIN
      • SQRT
      • TAN
      • TRUNCATE

    • 字符串函数

      • ASCII
      • CHAR
      • CHAR_LENGTH
      • CONCAT
      • CONCAT_WS
      • LENGTH
      • LOWER
      • LTRIM
      • POSITION
      • REPEAT
      • REPLACE
      • RTRIM
      • SUBSTRING/SUBSTR
      • SUBSTRING_INDEX
      • TRIM
      • UPPER

    • 转换函数

      • CAST
      • TO_CHAR
      • TO_ISO8601
      • TO_JSON
      • TO_TIMESTAMP
      • TO_UNIXTIMESTAMP

    • 时间和日期函数

      • DAYOFWEEK
      • NOW
      • TIMEDIFF
      • TIMETRUNCATE
      • TIMEZONE
      • TODAY
      • WEEK
      • WEEKDAY
      • WEEKOFYEAR


  • 聚合函数

    • APERCENTILE
    • AVG
    • COUNT
    • ELAPSED
    • HISTOGRAM
    • HYPERLOGLOG
    • LEASTSQUARES
    • PERCENTILE
    • SPREAD
    • STDDEV/STDDEV_POP
    • SUM
    • VAR_POP

  • 选择函数

    • BOTTOM
    • FIRST
    • INTERP
    • LAST
    • LAST_ROW
    • MAX
    • MIN
    • MODE
    • SAMPLE
    • TAIL
    • TOP
    • UNIQUE
    • COLS

  • 时序数据特有函数

    • CSUM
    • DERIVATIVE
    • DIFF
    • IRATE
    • MAVG
    • STATECOUNT
    • STATEDURATION
    • TWA

  • 系统信息函数

    • CLIENT_VERSION
    • CURRENT_USER
    • DATABASE
    • SERVER_STATUS
    • SERVER_VERSION

  • Geometry 函数

    • Geometry 输入函数

      • ST_GeomFromText

    • Geometry 输出函数

      • ST_AsText

    • Geometry 关系函数

      • ST_Contains
      • ST_ContainsProperly
      • ST_Covers
      • ST_Equals
      • ST_Intersects
      • ST_Touches


简介

TDengine 中支持的 SQL 函数比力丰富,我们按函数的类型进行了分类。从利用规则上,分为两大类,一类是投影查询函数,另一类是聚合查询函数。
投影函数只能用到投影查询中,聚合函数只能利用在聚合查询中,两种类型函数利用在一起会报语法错误。


  • 投影函数
    界说:投影函数用于从关系(表)中选取特定的列(属性),并将这些列的值进行展示或进一步处理,它主要是对关系进行垂直方向的筛选。
    作用:在数据库查询中,通过投影函数可以选择需要返回的列,而不必返回表中的所有列,这样可以淘汰数据的传输和处理量,提高查询服从,同时也能更好地满足用户对特定信息的需求。
  • 聚合函数
    界说:聚合函数是对一组数据进行计算,并返回一个单一的汇总值。它会对表中的多行数据进行统计计算,例如计算总和、平均值、最大值、最小值、计数等。
    作用:用于对数据进行分组汇总和统计分析,帮助用户快速获取数据的整体特征和统计信息,在数据分析、报表生成等场景中非常常用。
单行函数

单行函数为查询结果中的每一行返回一个结果行。
数学函数

ABS

  1. ABS(expr)
复制代码
功能阐明:获得指定字段的绝对值。
返回结果类型:与指定字段的原始数据类型同等。
实用数据类型:数值类型。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明:只能与普通列,选择(Selection)、投影(Projection)函数一起利用,不能与聚合(Aggregation)函数一起利用。
ACOS

  1. ACOS(expr)
复制代码
功能阐明:获得指定字段的反余弦结果。
返回结果类型:DOUBLE。
实用数据类型:数值类型。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明:只能与普通列,选择(Selection)、投影(Projection)函数一起利用,不能与聚合(Aggregation)函数一起利用。
ASIN

  1. ASIN(expr)
复制代码
功能阐明:获得指定字段的反正弦结果。
返回结果类型:DOUBLE。
实用数据类型:数值类型。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明:只能与普通列,选择(Selection)、投影(Projection)函数一起利用,不能与聚合(Aggregation)函数一起利用。
ATAN

  1. ATAN(expr)
复制代码
功能阐明:获得指定字段的反正切结果。
返回结果类型:DOUBLE。
实用数据类型:数值类型。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明:只能与普通列,选择(Selection)、投影(Projection)函数一起利用,不能与聚合(Aggregation)函数一起利用。
CEIL

  1. CEIL(expr)
复制代码
功能阐明:获得指定字段的向上取整数的结果。
返回结果类型:与指定字段的原始数据类型同等。
实用数据类型:数值类型。
实用于:表和超级表。
嵌套子查询支持:实用于内层查询和外层查询。
利用阐明:只能与普通列,选择(Selection)、投影(Projection)函数一起利用,不能与聚合(Aggregation)函数一起利用。
COS

  1. COS(expr)
复制代码
功能阐明:获得指定字段的余弦结果。
返回结果类型:DOUBLE。
实用数据类型:数值类型。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明:只能与普通列,选择(Selection)、投影(Projection)函数一起利用,不能与聚合(Aggregation)函数一起利用。
DEGREES

  1. DEGREES(expr)
复制代码
功能阐明:计算指定参数由弧度值转为角度后的值。
版本:v3.3.3.0
返回结果类型:DOUBLE。
实用数据类型:数值类型。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明


  • 假如 expr 为 NULL,则返回 NULL。
  • degree = radian * 180 / π。
  • 只能与普通列,选择(Selection)、投影(Projection)函数一起利用,不能与聚合(Aggregation)函数一起利用。
举例
  1. taos> select degrees(PI()
  2. );
  3.        degrees(pi())       |
  4. ============================
  5.        180.000000000000000 |
复制代码
EXP

  1. EXP(expr)
复制代码
功能阐明:返回 e(天然对数的底)的指定乘方后的值。
版本:v3.3.3.0
返回结果类型:DOUBLE。
实用数据类型:数值类型。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明


  • 假如 expr 为 NULL,返回 NULL。
  • 只能与普通列,选择(Selection)、投影(Projection)函数一起利用,不能与聚合(Aggregation)函数一起利用。
举例
  1. taos> select exp(2);
  2.           exp(2)           |
  3. ============================
  4.          7.389056098930650 |
复制代码
FLOOR

  1. FLOOR(expr)
复制代码
功能阐明:获得指定字段的向下取整数的结果。
其他利用阐明参见 CEIL 函数形貌。
LN

  1. LN(expr)
复制代码
功能阐明:返回指定参数的天然对数。
版本:v3.3.3.0
返回结果类型:DOUBLE。
实用数据类型:数值类型。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明


  • 假如 expr 为 NULL,返回 NULL。
  • 假如 epxr 小于等于 0,返回 NULL。
  • 只能与普通列,选择(Selection)、投影(Projection)函数一起利用,不能与聚合(Aggregation)函数一起利用。
举例
  1. taos> select ln(10);
  2.           ln(10)           |
  3. ============================
  4.          2.302585092994046 |
复制代码
LOG

  1. LOG(expr1[, expr2])
复制代码
功能阐明:获得 expr1 对于底数 expr2 的对数。假如 expr2 参数省略,则返回指定字段的天然对数值。
返回结果类型:DOUBLE。
实用数据类型:数值类型。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明:只能与普通列,选择(Selection)、投影(Projection)函数一起利用,不能与聚合(Aggregation)函数一起利用。
MOD

  1. MOD(expr1, expr2)
复制代码
功能阐明:计算 expr1 % expr2 的结果。
版本:v3.3.3.0
返回结果类型:DOUBLE。
实用数据类型:数值类型。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明


  • 假如 expr2 为 0 则返回 NULL。
  • 假如 expr1 或 expr2 为 NULL,返回 NULL。
  • 只能与普通列,选择(Selection)、投影(Projection)函数一起利用,不能与聚合(Aggregation)函数一起利用。
举例
  1. taos> select mod(10,3);
  2.          mod(10,3)         |
  3. ============================
  4.          1.000000000000000 |
  5. taos> select mod(1,0);
  6.          mod(1,0)          |
  7. ============================
  8. NULL                      |
复制代码
PI

  1. PI()
复制代码
功能阐明:返回圆周率 π 的值。
版本:v3.3.3.0
返回结果类型:DOUBLE。
实用数据类型:无。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明


  • π ≈ 3.141592653589793。
  • 只能与普通列,选择(Selection)、投影(Projection)函数一起利用,不能与聚合(Aggregation)函数一起利用。
举例
  1. taos> select pi();
  2.            pi()            |
  3. ============================
  4.          3.141592653589793 |
复制代码
POW

  1. POW(expr1, expr2)
复制代码
功能阐明:获得 expr1 的指数为 expr2 的幂。
返回结果类型:DOUBLE。
实用数据类型:数值类型。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明:只能与普通列,选择(Selection)、投影(Projection)函数一起利用,不能与聚合(Aggregation)函数一起利用。
RADIANS

  1. RADIANS(expr)
复制代码
功能阐明:计算指定参数由角度值转为弧度后的值。
版本:v3.3.3.0
返回结果类型:DOUBLE。
实用数据类型:数值类型。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明


  • 假如 expr 为 NULL,则返回 NULL。
  • radian = degree * π / 180。
  • 只能与普通列,选择(Selection)、投影(Projection)函数一起利用,不能与聚合(Aggregation)函数一起利用。
举例
  1. taos> select radians(180);
  2.        radians(180)        |
  3. ============================
  4.          3.141592653589793 |
复制代码
RAND

  1. RAND([seed])
复制代码
功能阐明:返回一个从0到1匀称分布的随机数。
版本:v3.3.3.0
返回结果类型:DOUBLE。
实用数据类型


  • seed:INTEGER。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明


  • 假如指定了 seed 值,那么将会用指定的 seed 作为随机种子,确保生成的随机数序列具有确定性。
  • 只能与普通列,选择(Selection)、投影(Projection)函数一起利用,不能与聚合(Aggregation)函数一起利用。
举例
  1. taos> select rand();
  2.           rand()           |
  3. ============================
  4.          0.202092426923147 |
  5.          
  6. taos> select rand();
  7.           rand()           |
  8. ============================
  9.          0.131537788143166 |
  10.          
  11. taos> select rand(1);
  12.           rand(1)          |
  13. ============================
  14.          0.000007826369259 |
  15.          
  16. taos> select rand(1);
  17.           rand(1)          |
  18. ============================
  19.          0.000007826369259 |
复制代码
ROUND

  1. ROUND(expr[, digits])
复制代码
功能阐明:获得指定字段的四舍五入的结果。
返回结果类型:与指定字段的原始数据类型同等。
实用数据类型


  • expr:数值类型。
  • digits:数值类型。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明


  • 若 expr 或 digits 为 NULL,返回 NULL。
  • 若指定了digits,则会保存 digits 位小数,默以为 0。
  • 若输入值是 INTEGER 类型,无论 digits 值为多少,都只会返回 INTEGER 类型,不会保存小数。
  • digits 大于零表现对小数位进行操作,四舍五入到 digits 位小数。若小数位数小于 digits 位,不进行四舍五入操作,直接返回。
  • digits 小于零表现丢掉小数位,并将数字四舍五入到小数点左侧 digits 位。若小数点左侧的位数小于 digits位,返回 0。
  • 由于暂未支持 DECIMAL 类型,所以该函数会用 DOUBLE 和 FLOAT 来表现包含小数的结果,但是 DOUBLE 和 FLOAT 是有精度上限的,当位数太多时利用该函数大概没有意义。
  • 只能与普通列,选择(Selection)、投影(Projection)函数一起利用,不能与聚合(Aggregation)函数一起利用。
  • digits 从 v3.3.3.0 开始支持。
举例
  1. taos> select round(8888.88);
  2.       round(8888.88)       |
  3. ============================
  4.       8889.000000000000000 |
  5. taos> select round(8888.88,-1);
  6.      round(8888.88,-1)     |
  7. ============================
  8.       8890.000000000000000 |
复制代码
SIGN

  1. SIGN(expr)
复制代码
功能阐明:返回指定参数的符号。
版本:v3.3.3.0
返回结果类型:与指定字段的原始数据类型同等。
实用数据类型:数值类型。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明


  • 假如 expr 为负,返回 -1。
  • 假如 expr 为正,返回 1。
  • 假如 expr 为 0,返回 0。
  • 假如 expr 为 NULL,返回 NULL。
  • 只能与普通列,选择(Selection)、投影(Projection)函数一起利用,不能与聚合(Aggregation)函数一起利用。
举例
  1. taos> select sign(-1);
  2.        sign(-1)        |
  3. ========================
  4.                     -1 |
  5. taos> select sign(1);
  6.         sign(1)        |
  7. ========================
  8.                      1 |
  9. taos> select sign(0);
  10.         sign(0)        |
  11. ========================
  12.                      0 |
复制代码
SIN

  1. SIN(expr)
复制代码
功能阐明:获得指定字段的正弦结果。
返回结果类型:DOUBLE。
实用数据类型:数值类型。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明:只能与普通列,选择(Selection)、投影(Projection)函数一起利用,不能与聚合(Aggregation)函数一起利用。
SQRT

  1. SQRT(expr)
复制代码
功能阐明:获得指定字段的平方根。
返回结果类型:DOUBLE。
实用数据类型:数值类型。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明:只能与普通列,选择(Selection)、投影(Projection)函数一起利用,不能与聚合(Aggregation)函数一起利用。
TAN

  1. TAN(expr)
复制代码
功能阐明:获得指定字段的正切结果。
返回结果类型:DOUBLE。
实用数据类型:数值类型。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明:只能与普通列,选择(Selection)、投影(Projection)函数一起利用,不能与聚合(Aggregation)函数一起利用。
TRUNCATE

  1. TRUNCATE(expr, digits)
复制代码
功能阐明:获得指定字段按照指定位数截断的值。
版本:v3.3.3.0
返回结果类型:与 expr 字段的原始数据类型同等。
实用数据类型


  • expr:数值类型。
  • digits:数值类型。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明


  • 若 expr 或 digits 为 NULL,返回 NULL。
  • 截取指按保存位数直接进行截取,没有四舍五入。
  • digits 大于零表现对小数位进行操作,截取到 digits 位小数,若小数位数小于 digits 位,不进行截取操作,直接返回。
  • digits 等于零表现丢掉小数位。
  • digits 小于零表现丢掉小数位,并将小数点左侧 digits 位置 0。若小数点左侧的位数小于 digits位,返回 0。
  • 由于暂未支持 DECIMAL 类型,所以该函数会用 DOUBLE 和 FLOAT 来表现包含小数的结果,但是 DOUBLE 和 FLOAT 是有精度上限的,当位数太多时利用该函数大概没有意义。
  • 只能与普通列,选择(Selection)、投影(Projection)函数一起利用,不能与聚合(Aggregation)函数一起利用。
举例
  1. taos> select truncate(8888.88, 0);
  2. truncate(8888.88, 0)    |
  3. ============================
  4.     8888.000000000000000 |
  5.      
  6. taos> select truncate(8888.88, -1);
  7. truncate(8888.88, -1)   |
  8. ============================
  9.     8880.000000000000000 |
复制代码
字符串函数

字符串函数的输入参数为字符串类型,返回结果为数值类型或字符串类型。
ASCII

  1. ASCII(expr)
复制代码
功能阐明:返回字符串第一个字符的 ASCII 码。
版本:v3.3.3.0
返回结果数据类型:BIGINT。
实用数据类型:VARCHAR、NCHAR。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明


  • 假如 expr 为 NULL,返回 NULL。
  • 假如 expr 的第一个字符为多字节字符,只会返回该字符第一个字节的值对应的 ASCII 码。
举例
  1. taos> select ascii('testascii');
  2. ascii('testascii') |
  3. =====================
  4.                 116 |
复制代码
CHAR

  1. CHAR(expr1 [, expr2] [, epxr3] ...)
复制代码
功能阐明:将输入参数看成整数,并返回这些整数在 ASCII 编码中对应的字符。
版本:v3.3.3.0
返回结果类型:VARCHAR。
实用数据类型:整数类型,VARCHAR、NCHAR。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明


  • 输入的值超过 255 会被转化成多字节的结果,如 CHAR(256) 等同于 CHAR(1,0)、CHAR(256 * 256) 等同于 CHAR(1,0,0)。
  • 输入参数的 NULL 值会被跳过。
  • 输入参数若为字符串类型,会将其转换为数值类型处理。
  • 若输入的参数对应的字符为不可打印字符,返回值中仍有该参数对应的字符,但是大概无法表现出来。
  • 输入参数的个数上限为 2^31 - 1 个。
举例
  1. taos> select char(77);
  2. char(77) |
  3. ===========
  4. M        |
  5. taos> select char(77,77);
  6. char(77,77) |
  7. ==============
  8. MM          |
  9. taos> select char(77 * 256 + 77);
  10. char(77 * 256 + 77) |
  11. ======================
  12. MM                  |
  13. taos> select char(77,NULL,77);
  14. char(77,null,77) |
  15. ===================
  16. MM               |
复制代码
CHAR_LENGTH

  1. CHAR_LENGTH(expr)
复制代码
功能阐明:以字符计数的字符串长度。
返回结果类型:BIGINT。
实用数据类型:VARCHAR、NCHAR。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明


  • 与 LENGTH() 函数不同在于,对于多字节字符,比如中文字符,CHAR_LENGTH() 函数会将其算做一个字符,长度为 1,而 LENGTH() 管帐算其字节数,长度为 3。比如 CHAR_LENGTH('你好') = 2,LENGTH('你好') = 6。
  • 假如 expr 为 NULL,返回 NULL。
举例
  1. taos> select char_length('Hello world');
  2. char_length('Hello world') |
  3. =============================
  4.                          11 |
  5. taos> select char_length('你好 世界');
  6.       char_length('你好 世界') |
  7. ===============================
  8.                             5 |
复制代码
CONCAT

  1. CONCAT(expr1, expr2 [, expr] ... )
复制代码
功能阐明:字符串毗连函数。
返回结果类型:假如所有参数均为 VARCHAR 类型,则结果类型为 VARCHAR。假如参数包含NCHAR类型,则结果类型为NCHAR。假如参数包含NULL值,则输出值为NULL。
实用数据类型:VARCHAR、NCHAR。该函数最小参数个数为 2 个,最大参数个数为 8 个。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
CONCAT_WS

  1. CONCAT_WS(separator_expr, expr1, expr2 [, expr] ...)
复制代码
功能阐明:带分隔符的字符串毗连函数。
返回结果类型:假如所有参数均为VARCHAR类型,则结果类型为VARCHAR。假如参数包含NCHAR类型,则结果类型为NCHAR。假如参数包含NULL值,则输出值为NULL。
实用数据类型:VARCHAR、NCHAR。该函数最小参数个数为 3 个,最大参数个数为 9 个。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
LENGTH

  1. LENGTH(expr)
复制代码
功能阐明:以字节计数的长度。
返回结果类型:BIGINT。
实用数据类型:VARCHAR、NCHAR、VARBINARY。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
LOWER

  1. LOWER(expr)
复制代码
功能阐明:将字符串参数值转换为全小写字母。
返回结果类型:与输入字段的原始类型雷同。
实用数据类型:VARCHAR、NCHAR。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
LTRIM

  1. LTRIM(expr)
复制代码
功能阐明:返回清除左边空格后的字符串。
返回结果类型:与输入字段的原始类型雷同。
实用数据类型:VARCHAR、NCHAR。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
POSITION

  1. POSITION(expr1 IN expr2)
复制代码
功能阐明:计算字符串 expr1 在字符串 expr2 中的位置。
版本:v3.3.3.0
返回结果类型:BIGINT。
实用数据类型


  • expr1:VARCHAR、NCHAR。
  • expr2:VARCHAR、NCHAR。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明


  • 若 expr1 或 expr2 为 NULL,返回 NULL。
  • 若 expr1 在 expr2 中不存在,返回 0。
  • 若 expr1 为空串,以为 expr1 在 expr2 中总能匹配乐成,返回 1。
  • 返回的位置是 1-base 的。
  • 该函数是多字节安全的。
举例
  1. taos> select position('a' in 'cba');
  2. position('a' in 'cba') |
  3. =========================
  4.                       3 |
  5. taos> select position('' in 'cba');
  6. position('' in 'cba') |
  7. ========================
  8.                      1 |
  9. taos> select position('d' in 'cba');
  10. position('d' in 'cba') |
  11. =========================
  12.                       0 |
复制代码
REPEAT

  1. REPEAT(expr, count)
复制代码
功能阐明:返回将字符串重复指定次数得到的字符串。
版本:v3.3.3.0
返回结果类型:与输入字段 expr 的原始类型雷同。
实用数据类型


  • expr:VARCHAR、NCHAR。
  • count:INTEGER。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明


  • 若 count < 1,返回空串。
  • 若 expr 或 count 为 NULL,返回 NULL。
举例
  1. taos> select repeat('abc',5);
  2.       repeat('abc',5)      |
  3. ============================
  4. abcabcabcabcabc           |
  5.             
  6. taos> select repeat('abc',-1);
  7. repeat('abc',-1) |
  8. ===================
  9.                   |
复制代码
REPLACE

  1. REPLACE(expr, from_str, to_str)
复制代码
功能阐明:将字符串中的 from_str 全部更换为 to_str。
版本:v3.3.3.0
返回结果类型:与输入字段 expr 的原始类型雷同。
实用数据类型


  • expr:VARCHAR、NCHAR。
  • from_str:VARCHAR、NCHAR。
  • to_str:VARCHAR、NCHAR。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明


  • 该函数是大小写敏感的。
  • 恣意参数为 NULL,返回 NULL。
  • 该函数是多字节安全的。
举例
  1. taos> select replace('aabbccAABBCC', 'AA', 'DD');
  2. replace('aabbccAABBCC', 'AA', 'DD') |
  3. ======================================
  4. aabbccDDBBCC                        |
复制代码
RTRIM

  1. RTRIM(expr)
复制代码
功能阐明:返回清除右边空格后的字符串。
返回结果类型:与输入字段的原始类型雷同。
实用数据类型:VARCHAR、NCHAR。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
SUBSTRING/SUBSTR

  1. SUBSTRING/SUBSTR(expr, pos [, len])
  2. SUBSTRING/SUBSTR(expr FROM pos [FOR len])
复制代码
功能阐明:返回字符串 expr 在 pos 位置开始的子串,若指定了 len,则返回在 pos 位置开始,长度为 len 的子串。
返回结果类型:与输入字段 expr 的原始类型雷同。
实用数据类型


  • expr:VARCHAR、NCHAR。
  • pos:整数类型。
  • len:整数类型。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明


  • 若 pos 为正数,则返回的结果为 expr 从左到右开始数 pos 位置开始的右侧的子串。
  • 若 pos 为负数,则返回的结果为 expr 从右到左开始数 pos 位置开始的右侧的子串。
  • 恣意参数为 NULL,返回 NULL。
  • 该函数是多字节安全的。
  • 若 len 小于 1,返回空串。
  • pos 是 1-base 的,若 pos 为 0,返回空串。
  • 若 pos + len 大于 len(expr),返回从 pos 开始到字符串结尾的子串,等同于执行 substring(expr, pos)。
  • SUBSTRING 函数等价于 SUBSTR,从 v3.3.3.0 开始支持。
  • SUBSTRING/SUBSTR(expr FROM pos [FOR len]) 语法从 v3.3.3.0 开始支持。
举例
  1. taos> select substring('tdengine', 0);
  2. substring('tdengine', 0) |
  3. ===========================
  4.                           |
  5. taos> select substring('tdengine', 3);
  6. substring('tdengine', 3) |
  7. ===========================
  8. engine                   |
  9. taos> select substring('tdengine', 3,3);
  10. substring('tdengine', 3,3) |
  11. =============================
  12. eng                        |
  13. taos> select substring('tdengine', -3,3);
  14. substring('tdengine', -3,3) |
  15. ==============================
  16. ine                         |
  17. taos> select substring('tdengine', -3,-3);
  18. substring('tdengine', -3,-3) |
  19. ===============================
  20.                               |
复制代码
SUBSTRING_INDEX

  1. SUBSTRING_INDEX(expr, delim, count)
复制代码
功能阐明:返回字符串 expr 在出现指定次数分隔符的位置截取的子串。
版本:v3.3.3.0
返回结果类型:与输入字段 expr 的原始类型雷同。
实用数据类型


  • expr:VARCHAR、NCHAR。
  • delim:VARCHAR、NCHAR。
  • count:INTEGER。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明


  • 若 count 为正数,则返回的结果为 expr 从左到右开始数第 count 次 出现 delim 的位置左侧的字符串。
  • 若 count 为负数,则返回的结果为 expr 从右到左开始数第 count 的绝对值次 出现 delim 的位置右侧的字符串。
  • 恣意参数为 NULL,返回 NULL。
  • 该函数是多字节安全的。
举例
  1. taos> select substring_index('www.taosdata.com','.',2);
  2. substring_index('www.taosdata.com','.',2) |
  3. ============================================
  4. www.taosdata                              |
  5. taos> select substring_index('www.taosdata.com','.',-2);
  6. substring_index('www.taosdata.com','.',-2) |
  7. =============================================
  8. taosdata.com                               |
复制代码
TRIM

  1. TRIM([{LEADING | TRAILING | BOTH} [remstr] FROM] expr)
  2. TRIM([remstr FROM] expr)
复制代码
功能阐明:返归去掉了所有 remstr 前缀或后缀的字符串 epxr。
版本:v3.3.3.0
返回结果类型:与输入字段 epxr 的原始类型雷同。
实用数据类型


  • remstr:VARCHAR、NCHAR。
  • epxr:VARCHAR、NCHAR。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明


  • 第一个可选变量[LEADING | BOTH | TRAILING]指定要剪裁字符串的哪一侧:

    • LEADING 将移除字符串开头的指定字符。
    • TRAILING 将移除字符串末尾的指定字符。
    • BOTH(默认值)将移除字符串开头和末尾的指定字符。

  • 第二个可选变量[remstr]指定要裁剪掉的字符串:

    • 假如不指定 remstr,默认裁剪空格。
    • remstr 可以指定多个字符,如trim(‘ab’ from ‘abacd’),此时会将 ‘ab’ 看做一个整体来裁剪,得到裁剪结果 ‘acd’。

  • 若 expr 为 NULL,返回 NULL。
  • 该函数是多字节安全的。
举例
  1. taos> select trim('        a         ');
  2. trim('        a         ') |
  3. =============================
  4. a                          |
  5. taos> select trim(leading from '        a         ');
  6. trim(leading from '        a         ') |
  7. ==========================================
  8. a                                       |
  9. taos> select trim(leading 'b' from 'bbbbbbbba         ');
  10. trim(leading 'b' from 'bbbbbbbba         ') |
  11. ==============================================
  12. a                                           |
  13. taos> select trim(both 'b' from 'bbbbbabbbbbb');
  14. trim(both 'b' from 'bbbbbabbbbbb') |
  15. =====================================
  16. a                                  |
复制代码
UPPER

  1. UPPER(expr)
复制代码
功能阐明:将字符串参数值转换为全大写字母。
返回结果类型:与输入字段的原始类型雷同。
实用数据类型:VARCHAR、NCHAR。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
转换函数

转换函数将值从一种数据类型转换为另一种数据类型。
CAST

  1. CAST(expr AS type_name)
复制代码
功能阐明:数据类型转换函数,返回 expr 转换为 type_name 指定的类型后的结果。
返回结果类型:CAST 中指定的类型(type_name)。
实用数据类型:输入参数 expr 的类型可以是除 JSON 和 VARBINARY 外的所有类型。假如 type_name 为 VARBINARY,则 expr 只能是 VARCHAR 类型。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明


  • 对于不能支持的类型转换会直接报错。
  • 对于类型支持但某些值无法准确转换的情况,对应的转换后的值以转换函数输出为准。目前大概碰到的几种情况:

    • 字符串类型转换数值类型时大概出现的无效字符情况,例如 “a” 大概转为 0,但不会报错。
    • 转换到数值类型时,数值大于 type_name 可表现的范围时,则会溢出,但不会报错。
    • 转换到字符串类型时,假如转换后长度超过 type_name 中指定的长度,则会截断,但不会报错。

TO_CHAR

  1. TO_CHAR(ts, format_str_literal)
复制代码
功能阐明:将timestamp类型按照指定格式转换为字符串
版本:v3.2.2.0
返回结果数据类型:VARCHAR
应用字段:TIMESTAMP
嵌套子查询支持:实用于内层查询和外层查询
实用于:表和超级表
支持的格式
格式阐明例子AM,am,PM,pm无点分隔的上午下午07:00:00amA.M.,a.m.,P.M.,p.m.有点分隔的上午下午07:00:00a.m.YYYY,yyyy年,4 个及以上数字2023-10-10YYY,yyy年,最后 3 位数字023-10-10YY,yy年,最后 2 位数字23-10-10Y,y年,最后一位数字3-10-10MONTH月,全大写2023-JANUARY-01Month月,首字母大写2023-January-01month月,全小写2023-january-01MON月,缩写,全大写(三个字符)JAN、SEPMon月,缩写,首字母大写Jan、Sepmon月,缩写,全小写jan、sepMM,mm月,数字 01-122023-01-01DD,dd月日,01-31DAY周日,全大写MONDAYDay周日,首字符大写Mondayday周日,全小写mondayDY周日,缩写,全大写MONDy周日,缩写,首字符大写Mondy周日,缩写,全小写monDDD年日,001-366D,d周日,数字,1-7,Sunday(1) to Saturday(7)HH24,hh24小时,00-232023-01-30 23:59:59hh12,HH12,hh,HH小时,01-122023-01-30 12:59:59PMMI,mi分钟,00-59SS,ss秒,00-59MS,ms毫秒,000-999US,us微秒,000000-999999NS,ns纳秒,000000000-999999999TZH,tzh时区小时2023-01-30 11:59:59PM +08 利用阐明


  • Month、Day等的输特别式是左对齐的,右侧添加空格,如 2023-OCTOBER -01、2023-SEPTEMBER-01,9 月是月份中英文字母数最长的,因此 9 月没有空格。星期类似。
  • 利用ms、us、ns时,以上三种格式的输出只在精度上不同,比如 ts 为 1697182085123,ms 的输出为 123,us 的输出为 123000,ns 的输出为 123000000。
  • 时间格式中无法匹配规则的内容会直接输出。假如想要在格式串中指定某些能够匹配规则的部分不做转换,可以利用双引号,如 to_char(ts, 'yyyy-mm-dd "is formated by yyyy-mm-dd"')。假如想要输出双引号,那么在双引号之前加一个反斜杠,如 to_char(ts, '\"yyyy-mm-dd\"') 将会输出 "2023-10-10"。
  • 那些输出是数字的格式,如YYYY、DD,大写与小写意义雷同,即 yyyy 和 YYYY 可以互换。
  • 推荐在时间格式中带时区信息,假如不带则默认输出的时区为服务端或客户端所配置的时区。
  • 输入时间戳的精度由所查询表的精度确定,若未指定表,则精度为毫秒。
TO_ISO8601

  1. TO_ISO8601(expr [, timezone])
复制代码
功能阐明:将时间戳转换成为 ISO8601 标准的日期时间格式,并附加时区信息。timezone 参数允许用户为输出结果指定附带恣意时区信息。假如 timezone 参数省略,输出结果则附带当前客户端的系统时区信息。
返回结果数据类型:VARCHAR 类型。
实用数据类型:INTEGER、TIMESTAMP。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明


  • timezone 参数允许输入的时区格式为:[z/Z, +/-hhmm, +/-hh, +/-hh:mm]。例如,TO_ISO8601(1, “+00:00”)。
  • 输入时间戳的精度由所查询表的精度确定,若未指定表,则精度为毫秒.
TO_JSON

  1. TO_JSON(str_literal)
复制代码
功能阐明:将字符串常量转换为 JSON 类型。
返回结果数据类型:JSON。
实用数据类型:JSON 字符串,形如 ‘{ “literal” : literal }’。'{}'表现空值。键必须为字符串字面量,值可以为数值字面量、字符串字面量、布尔字面量或空值字面量。str_literal 中不支持转义符。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
TO_TIMESTAMP

  1. TO_TIMESTAMP(ts_str_literal, format_str_literal)
复制代码
功能阐明:将字符串按照指定格式转化为时间戳.
版本:v3.2.2.0
返回结果数据类型:TIMESTAMP
应用字段:VARCHAR
嵌套子查询支持:实用于内层查询和外层查询
实用于:表和超级表
支持的格式:与to_char雷同
利用阐明


  • 若 ms、us、ns 同时指定,那么结果时间戳包含上述三个字段的和。如 to_timestamp('2023-10-10 10:10:10.123.000456.000000789', 'yyyy-mm-dd hh:mi:ss.ms.us.ns') 输出为 2023-10-10 10:10:10.123456789对应的时间戳。
  • MONTH、MON、DAY、DY 以及其他输出为数字的格式的大小写意义雷同,如 to_timestamp('2023-JANUARY-01', 'YYYY-month-dd'),month可以被更换为 MONTH 或者 Month。
  • 假如同一字段被指定了多次,那么前面的指定将会被覆盖。如 to_timestamp('2023-22-10-10', 'yyyy-yy-MM-dd'),输出年份是2022。
  • 为避免转换时利用了非预期的时区,推荐在时间中携带时区信息,例如’2023-10-10 10:10:10+08’,假如未指定时区则默认时区为服务端或客户端指定的时区。
  • 假如没有指定完整的时间,那么默认时间值为指定或默认时区的 1970-01-01 00:00:00,未指定部分利用该默认值中的对应部分。暂不支持只指定年日而不指定月日的格式,如 ‘yyyy-mm-DDD’,支持 ‘yyyy-mm-DD’。
  • 假如格式串中有AM,PM等,那么小时必须是12小时制,范围必须是01-12。
  • to_timestamp转换具有肯定的容错机制,在格式串和时间戳串不完全对应时,偶然也可转换,如 to_timestamp('200101/2', 'yyyyMM1/dd'),格式串中多出来的 1 会被丢弃. 格式串与时间戳串中多余的空格字符(空格、tab 等)也会被 主动忽略。如 to_timestamp(' 23 年 - 1 月 - 01 日 ', 'yy 年-MM月-dd日') 可以被乐成转换。虽然 MM 等字段需要两个数字对应(只有一位时前面补 0),在 to_timestamp 时,一个数字也可以乐成转换。
  • 输出时间戳的精度与查询表的精度雷同,若查询未指定表,则输出精度为毫秒。如 select to_timestamp('2023-08-1 10:10:10.123456789', 'yyyy-mm-dd hh:mi:ss.ns') 的输出将会把微秒和纳秒进行截断. 假如指定一张纳秒表,那么就不会发生截断,如 select to_timestamp('2023-08-1 10:10:10.123456789', 'yyyy-mm-dd hh:mi:ss.ns') from db_ns.table_ns limit 1。
TO_UNIXTIMESTAMP

  1. TO_UNIXTIMESTAMP(expr [, return_timestamp])
  2. return_timestamp: {
  3.     0
  4.   | 1
  5. }
复制代码
功能阐明:将日期时间格式的字符串转换成为时间戳。
返回结果数据类型:BIGINT、TIMESTAMP。
应用字段:VARCHAR、NCHAR。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明


  • 输入的日期时间字符串须符合 ISO8601/RFC3339 标准,无法转换的字符串格式将返回 NULL。
  • 返回的时间戳精度与当前 DATABASE 设置的时间精度同等。
  • return_timestamp 指定函数返回值是否为时间戳类型,设置为 1 时返回 TIMESTAMP 类型,设置为 0 时返回 BIGINT 类型。如不指定缺省返回 BIGINT 类型。
时间和日期函数

时间和日期函数对时间戳类型进行操作。
所有返回当前时间的函数,如 NOW、TODAY 和 TIMEZONE,在一条 SQL 语句中岂论出现多少次都只会被计算一次。
DAYOFWEEK

  1. DAYOFWEEK(expr)
复制代码
功能阐明:返回输入日期是周几。
版本:v3.3.3.0
返回结果类型:BIGINT。
实用数据类型:表现时间戳的 BIGINT、TIMESTAMP 类型,或符合 ISO8601/RFC3339 标准的日期时间格式的 VARCHAR、NCHAR 类型。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明


  • 返回值 1 代表周日,2 代表周一 … 7 代表周六
  • 若 expr 为 NULL,返回 NULL。
  • 输入时间戳的精度由所查询表的精度确定,若未指定表,则精度为毫秒。
举例
  1. taos> select dayofweek('2000-01-01');
  2. dayofweek('2000-01-01') |
  3. ==========================
  4.                        7 |
复制代码
NOW

  1. NOW()
复制代码
功能阐明:返回客户端当前系统时间。
返回结果数据类型:TIMESTAMP。
应用字段:在 WHERE 或 INSERT 语句中利用时只能作用于 TIMESTAMP 类型的字段。
实用于:表和超级表。
嵌套子查询支持:实用于内层查询和外层查询。
利用阐明


  • 支持时间加减操作,如 NOW()
    + 1s,支持的时间单元如下:
    b(纳秒)、u(微秒)、a(毫秒)、s(秒)、m(分)、h(小时)、d(天)、w(周)。
  • 返回的时间戳精度与当前 DATABASE 设置的时间精度同等。
TIMEDIFF

  1. TIMEDIFF(expr1, expr2 [, time_unit])
复制代码
功能阐明:返回时间戳 expr1 - expr2 的结果,结果大概为负,并近似到时间单元 time_unit 指定的精度。
返回结果类型:BIGINT。
实用数据类型


  • expr1:表现时间戳的 BIGINT、TIMESTAMP 类型,或符合 ISO8601/RFC3339 标准的日期时间格式的 VARCHAR、NCHAR 类型。
  • expr2:表现时间戳的 BIGINT、TIMESTAMP 类型,或符合 ISO8601/RFC3339 标准的日期时间格式的 VARCHAR、NCHAR 类型。
  • time_unit:见利用阐明。
  • v3.3.3.0 之前该函数结果为时间戳 expr1 和 expr2 的差值的绝对值,结果为正数。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明


  • 支持的时间单元 time_unit 如下:1b(纳秒)、1u(微秒)、1a(毫秒)、1s(秒)、1m(分)、1h(小时)、1d(天)、1w(周)。
  • 假如时间单元 time_unit 未指定,返回的时间差值精度与当前 DATABASE 设置的时间精度同等。
  • 输入包含不符适时间日期格式的字符串则返回 NULL。
  • expr1 或 expr2 为 NULL,返回 NULL。
  • time_unit 为 NULL,等同于未指定时间单元。
  • 输入时间戳的精度由所查询表的精度确定,若未指定表,则精度为毫秒.
举例
  1. taos> select timediff('2022-01-01 08:00:00', '2022-01-01 08:00:01',1s);
  2. timediff('2022-01-01 08:00:00', '2022-01-01 08:00:01',1s) |
  3. ============================================================
  4.                                                         -1 |
  5. taos> select timediff('2022-01-01 08:00:01', '2022-01-01 08:00:00',1s);
  6. timediff('2022-01-01 08:00:01', '2022-01-01 08:00:00',1s) |
  7. ============================================================
  8.                                                          1 |
复制代码
TIMETRUNCATE

  1. TIMETRUNCATE(expr, time_unit [, use_current_timezone])
  2. use_current_timezone: {
  3.     0
  4.   | 1
  5. }
复制代码
功能阐明:将时间戳按照指定时间单元 time_unit 进行截断。
返回结果数据类型:TIMESTAMP。
应用字段:表现时间戳的 BIGINT、TIMESTAMP 类型,或符合 ISO8601/RFC3339 标准的日期时间格式的 VARCHAR、NCHAR 类型。
实用于:表和超级表。
利用阐明


  • 支持的时间单元 time_unit 如下:
    1b(纳秒)、1u(微秒)、1a(毫秒)、1s(秒)、1m(分)、1h(小时)、1d(天)、1w(周)。
  • 返回的时间戳精度与当前 DATABASE 设置的时间精度同等。
  • 输入时间戳的精度由所查询表的精度确定,若未指定表,则精度为毫秒.
  • 输入包含不符适时间日期格式的字符串则返回 NULL。
  • 当利用 1d/1w 作为时间单元对时间戳进行截断时,可通过设置 use_current_timezone 参数指定是否根据当前时区进行截断处理。
    值 0 表现利用 UTC 时区进行截断,值 1 表现利用当前时区进行截断。
    例如客户端所配置时区为 UTC+0800, 则 TIMETRUNCATE(‘2020-01-01 23:00:00’, 1d, 0) 返回结果为东八区时间 ‘2020-01-01 08:00:00’。
    而利用 TIMETRUNCATE(‘2020-01-01 23:00:00’, 1d, 1) 时,返回结果为东八区时间 ‘2020-01-01 00:00:00’。
    当不指定 use_current_timezone 时,use_current_timezone 默认值为 1。
  • 当将时间值截断到一周(1w)时,timetruncate 的计算是基于 Unix 时间戳(1970年1月1日00:00:00 UTC)进行的。Unix 时间戳始于星期四,
    因此所有截断后的日期都是星期四。
TIMEZONE

  1. TIMEZONE()
复制代码
功能阐明:返回客户端当前时区信息。
返回结果数据类型:VARCHAR。
应用字段:无
实用于:表和超级表。
TODAY

  1. TODAY()
复制代码
功能阐明:返回客户端当日零时的系统时间。
返回结果数据类型:TIMESTAMP。
应用字段:在 WHERE 或 INSERT 语句中利用时只能作用于 TIMESTAMP 类型的字段。
实用于:表和超级表。
利用阐明


  • 支持时间加减操作,如 TODAY()
    + 1s,支持的时间单元如下:
    b(纳秒)、u(微秒)、a(毫秒)、s(秒)、m(分)、h(小时)、d(天)、w(周)。
  • 返回的时间戳精度与当前 DATABASE 设置的时间精度同等。
WEEK

  1. WEEK(expr [, mode])
复制代码
功能阐明:返回输入日期的周数。
版本:v3.3.3.0
返回结果类型:BIGINT。
实用数据类型


  • expr:表现时间戳的 BIGINT、TIMESTAMP 类型,或符合 ISO8601/RFC3339 标准的日期时间格式的 VARCHAR、NCHAR 类型。
  • mode:0 - 7 之间的整数。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明


  • 若 expr 为 NULL,返回 NULL。
  • 输入时间戳的精度由所查询表的精度确定,若未指定表,则精度为毫秒.
  • mode 用来指定一周是从周日开始照旧周一开始,以及指定返回值范围是 1 - 53 照旧 0 - 53。下表详细形貌不同的 mode 对应的计算方法:
Mode每周的第一天返回值范围第 1 周的计算方法0周日0 - 53第一个包含周日的周为第 1 周1周一0 - 53第一个包含四天及以上的周为第 1 周2周日1 - 53第一个包含周日的周为第 1 周3周一1 - 53第一个包含四天及以上的周为第 1 周4周日0 - 53第一个包含四天及以上的周为第 1 周5周一0 - 53第一个包含周一的周为第 1 周6周日1 - 53第一个包含四天及以上的周为第 1 周7周一1 - 53第一个包含周一的周为第 1 周

  • 当返回值范围为 0 - 53 时,第 1 周之前的日期为第 0 周。
  • 当返回值范围为 1 - 53 时,第 1 周之前的日期为上一年的最后一周。
  • 以2000-01-01为例,

    • 在 mode=0 时返回值为 0,由于该年第一个周日为 2000-01-02,从 2000-01-02 起才是第 1 周,所以 2000-01-01 为第 0 周,返回 0。
    • 在 mode=1 时返回值为 0,由于 2000-01-01 所在的周只有两天,分别是 2000-01-01(周六) 和 2000-01-02(周日),所以 2000-01-03 起才是第一周,2000-01-01为第 0 周,返回 0。
    • 在 mode=2 时返回值为 52,由于从 2000-01-02 起才是第 1 周,并且返回值范围为 1-53,所以 2000-01-01 算做上一年的最后一周,即 1999 年的第 52 周,返回 52。

举例
  1. taos> select week('2000-01-01',0);
  2. week('2000-01-01',0)  |
  3. ========================
  4.                      0 |
  5. taos> select week('2000-01-01',1);
  6. week('2000-01-01',1)  |
  7. ========================
  8.                      0 |
  9. taos> select week('2000-01-01',2);
  10. week('2000-01-01',2)  |
  11. ========================
  12.                     52 |
  13. taos> select week('2000-01-01',3);
  14. week('2000-01-01',3)  |
  15. ========================
  16.                     52 |
复制代码
WEEKDAY

  1. WEEKDAY(expr)
复制代码
功能阐明:返回输入日期是周几。
版本:v3.3.3.0
返回结果类型:BIGINT。
实用数据类型:表现时间戳的 BIGINT、TIMESTAMP 类型,或符合 ISO8601/RFC3339 标准的日期时间格式的 VARCHAR、NCHAR 类型。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明


  • 返回值 0 代表周一,1 代表周二 … 6 代表周日。
  • 若 expr 为 NULL,返回 NULL。
  • 输入时间戳的精度由所查询表的精度确定,若未指定表,则精度为毫秒。
举例
  1. taos> select weekday('2000-01-01');
  2. weekday('2000-01-01') |
  3. ========================
  4.                      5 |
复制代码
WEEKOFYEAR

  1. WEEKOFYEAR(expr)
复制代码
功能阐明:返回输入日期的周数。
版本:v3.3.3.0
返回结果类型:BIGINT。
实用数据类型:表现时间戳的 BIGINT、TIMESTAMP 类型,或符合 ISO8601/RFC3339 标准的日期时间格式的 VARCHAR、NCHAR 类型。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明


  • 等同于WEEK(expr, 3),即在每周第一天是周一,返回值范围为 1 - 53,第一个包含四天及以上的周为第 1 周的条件下判断输入日期的周数。
  • 若 expr 为 NULL,返回 NULL。
  • 输入时间戳的精度由所查询表的精度确定,未指定表,则精度为毫秒。
举例
  1. taos> select weekofyear('2000-01-01');
  2. weekofyear('2000-01-01') |
  3. ===========================
  4.                        52 |
复制代码
聚合函数

聚合函数为查询结果集的每一个分组返回单个结果行。可以由 GROUP BY 或窗口切分子句指定分组,假如没有,则整个查询结果集视为一个分组。
TDengine 支持针对数据的聚合查询。提供如下聚合函数。
APERCENTILE

  1. APERCENTILE(expr, p [, algo_type])
  2. algo_type: {
  3.     "default"
  4.   | "t-digest"
  5. }
复制代码
功能阐明:统计表/超级表中指定列的值的近似百分比分位数,与 PERCENTILE 函数相似,但是返回近似结果。
返回数据类型:DOUBLE。
实用数据类型:数值类型。
实用于:表和超级表。
阐明


  • p 值范围是 [0,100],当为 0 时等同 于MIN,为 100 时等同于 MAX。
  • algo_type 取值为 “default” 或 “t-digest”。输入为 “default” 时函数利用基于直方图算法进行计算。输入为 “t-digest” 时利用 t-digest 算法计算分位数的近似结果。假如不指定 algo_type 则利用 “default” 算法。
  • t-digest 算法的近似结果对于输入数据顺序敏感,对超级表查询时不同的输入排序结果大概会有微小的毛病。
AVG

  1. AVG(expr)
复制代码
功能阐明:统计指定字段的平均值。
返回数据类型:DOUBLE。
实用数据类型:数值类型。
实用于:表和超级表。
COUNT

  1. COUNT({* | expr})
复制代码
功能阐明:统计指定字段的记录行数。
返回数据类型:BIGINT。
实用数据类型:全部类型字段。
实用于:表和超级表。
利用阐明


  • 可以利用星号 (*) 来替代具体的字段,利用星号 (*) 返回全部记录数目。
  • 假如统计字段是具体的列,则返回该列中非 NULL 值的记录数目。
ELAPSED

  1. ELAPSED(ts_primary_key [, time_unit])
复制代码
功能阐明:elapsed 函数表达了统计周期内连续的时间长度,和 twa 函数配合利用可以计算统计曲线下的面积。在通过 INTERVAL 子句指定窗口的情况下,统计在给定时间范围内的每个窗口内有数据覆盖的时间范围;假如没有 INTERVAL 子句,则返回整个给定时间范围内的有数据覆盖的时间范围。留意,ELAPSED 返回的并不是时间范围的绝对值,而是绝对值除以 time_unit 所得到的单元个数。流计算仅在 FORCE_WINDOW_CLOSE 模式下支持该函数。
返回结果类型:DOUBLE。
实用数据类型:TIMESTAMP。
实用于:表,超级表,嵌套查询的外层查询
阐明


  • ts_primary_key 参数只能是表的第一列,即 TIMESTAMP 类型的主键列。
  • 按 time_unit 参数指定的时间单元返回,最小是数据库的时间分辨率。time_unit 参数未指定时,以数据库的时间分辨率为时间单元。支持的时间单元 time_unit 如下:
    1b(纳秒)、1u(微秒)、1a(毫秒)、1s(秒)、1m(分)、1h(小时)、1d(天)、1w(周)。
  • 可以和 interval 组合利用,返回每个时间窗口的时间戳差值。需要特殊留意的是,除第一个时间窗口和最后一个时间窗口外,中心窗口的时间戳差值均为窗口长度。
  • order by asc/desc 不影响差值的计算结果。
  • 对于超级表,需要和 group by tbname 子句组合利用,不可以直接利用。
  • 对于普通表,不支持和 group by 子句组合利用。
  • 对于嵌套查询,仅当内层查询会输出隐式时间戳列时有效。例如 select elapsed(ts) from (select diff(value) from sub1) 语句,diff 函数会让内层查询输出隐式时间戳列,此为主键列,可以用于 elapsed 函数的第一个参数。相反,例如 select elapsed(ts) from (select * from sub1) 语句,ts 列输出到外层时已经没有了主键列的含义,无法利用 elapsed 函数。此外,elapsed 函数作为一个与时间线强依赖的函数,形如 select elapsed(ts) from (select diff(value) from st group by tbname) 尽管会返回一条计算结果,但并无现实意义,这种用法后续也将被限制。
  • 不支持与 leastsquares、diff、derivative、top、bottom、last_row、interp 等函数混合利用。
HISTOGRAM

  1. HISTOGRAM(expr,bin_type, bin_description, normalized)
复制代码
功能阐明:统计数据按照用户指定区间的分布。
返回结果类型:如归一化参数 normalized 设置为 1,返回结果为 DOUBLE 类型,否则为 BIGINT 类型。
实用数据类型:数值型字段。
实用于:表和超级表。
详细阐明


  • bin_type 用户指定的分桶类型,有效输入类型为 “user_input”、“linear_bin”、“log_bin”。
  • bin_description 形貌怎样生成分桶区间,针对三种桶类型,分别为以下形貌格式(均为 JSON 格式字符串):

    • “user_input”: “[1, 3, 5, 7]”
      用户指定 bin 的具体数值。
    • “linear_bin”: “{“start”: 0.0, “width”: 5.0, “count”: 5, “infinity”: true}”
      “start” 表现数据起始点,“width” 表现每次 bin 偏移量,“count” 为 bin 的总数,“infinity” 表现是否添加(-inf, inf)作为区间出发点和尽头,
      生成区间为[-inf, 0.0, 5.0, 10.0, 15.0, 20.0, +inf]。
    • “log_bin”: “{“start”:1.0, “factor”: 2.0, “count”: 5, “infinity”: true}”
      “start” 表现数据起始点,“factor” 表现按指数递增的因子,“count” 为 bin 的总数,“infinity” 表现是否添加(-inf, inf)作为区间出发点和尽头,
      生成区间为[-inf, 1.0, 2.0, 4.0, 8.0, 16.0, +inf]。

  • normalized 是否将返回结果归一化到 0~1 之间。有效输入为 0 和 1。
HYPERLOGLOG

  1. HYPERLOGLOG(expr)
复制代码
功能阐明


  • 采用 hyperloglog 算法,返回某列的基数。该算法在数据量很大的情况下,可以明显降低内存的占用,求出来的基数是个估算值,标准毛病(标准毛病是多次实行,每次的平均数的标准差,不是与真实结果的毛病)为 0.81%。
  • 在数据量较少的时候该算法不是很正确,可以利用 select count(data) from (select unique(col) as data from table) 的方法。
返回结果类型:INTEGER。
实用数据类型:任何类型。
实用于:表和超级表。
LEASTSQUARES

  1. LEASTSQUARES(expr, start_val, step_val)
复制代码
功能阐明:统计表中某列的值的拟合直线方程。start_val 是自变量初始值,step_val 是自变量的步长值。
返回数据类型:字符串表达式(斜率、截距)。
实用数据类型:expr 必须是数值类型。
实用于:表。
PERCENTILE

  1. PERCENTILE(expr, p [, p1] ... )
复制代码
功能阐明:统计表中某列的值百分比分位数。
返回数据类型:该函数最小参数个数为 2 个,最大参数个数为 11 个。可以最多同时返回 10 个百分比分位数。当参数个数为 2 时,返回一个分位数,类型为DOUBLE,当参数个数大于 2 时,返回类型为VARCHAR,格式为包含多个返回值的JSON数组。
应用字段:数值类型。
实用于:表。
利用阐明


  • P 值取值范围 0≤P≤100,为 0 的时候等同于 MIN,为 100 的时候等同于 MAX;
  • 同时计算针对同一列的多个分位数时,发起利用一个 PERCENTILE 函数和多个参数的方式,能很大程度上降低查询的相应时间。
    比如,利用查询 SELECT percentile(col, 90, 95, 99) FROM table,性能会优于 SELECT percentile(col, 90), percentile(col, 95), percentile(col, 99) from table。
SPREAD

  1. SPREAD(expr)
复制代码
功能阐明:统计表中某列的最大值和最小值之差。
返回数据类型:DOUBLE。
实用数据类型:INTEGER、TIMESTAMP。
实用于:表和超级表。
STDDEV/STDDEV_POP

  1. STDDEV/STDDEV_POP(expr)
复制代码
功能阐明:统计表中某列的总体标准差。
返回数据类型:DOUBLE。
实用数据类型:数值类型。
实用于:表和超级表。
阐明


  • STDDEV_POP 函数等价于 STDDEV 函数,从 v3.3.3.0 开始支持。
举例
  1. taos> select id from test_stddev;
  2.      id      |
  3. ==============
  4.            1 |
  5.            2 |
  6.            3 |
  7.            4 |
  8.            5 |
  9. taos> select stddev_pop(id) from test_stddev;
  10.       stddev_pop(id)       |
  11. ============================
  12.          1.414213562373095 |
复制代码
SUM

  1. SUM(expr)
复制代码
功能阐明:统计表/超级表中某列的和。
返回数据类型:DOUBLE、BIGINT。
实用数据类型:数值类型。
实用于:表和超级表。
VAR_POP

  1. VAR_POP(expr)
复制代码
功能阐明:统计表中某列的总体方差。
版本:v3.3.3.0
返回数据类型:DOUBLE。
实用数据类型:数值类型。
实用于:表和超级表。
举例
  1. taos> select id from test_var;
  2.      id      |
  3. ==============
  4.            3 |
  5.            1 |
  6.            2 |
  7.            4 |
  8.            5 |
  9. taos> select var_pop(id) from test_var;
  10.         var_pop(id)        |
  11. ============================
  12.          2.000000000000000 |
复制代码
选择函数

选择函数根据语义在查询结果会合选择一行或多行结果返回。用户可以同时指定输出 ts 列或其他列(包罗 tbname 和标签列),这样就可以方便地知道被选出的值是源于哪个数据行的。
BOTTOM

  1. BOTTOM(expr, k)
复制代码
功能阐明:统计表/超级表中某列的值最小 k 个非 NULL 值。假如多条数据取值一样,全部取用又会超出 k 条限制时,系统会从雷同值中随机选取符合要求的数目返回。
返回数据类型:同应用的字段。
实用数据类型:数值类型。
实用于:表和超级表。
利用阐明


  • k 值取值范围 1≤k≤100;
  • 系统同时返回该记录关联的时间戳列;
  • 限制:BOTTOM 函数不支持 FILL 子句。
FIRST

  1. FIRST(expr)
复制代码
功能阐明:统计表/超级表中某列的值最先写入的非 NULL 值。
返回数据类型:同应用的字段。
实用数据类型:所有字段。
实用于:表和超级表。
利用阐明


  • 假如要返回各个列的首个(时间戳最小)非 NULL 值,可以利用 FIRST(*);查询超级表,且 multiResultFunctionStarReturnTags 设置为 0 (默认值) 时,FIRST(*) 只返回超级表的普通列;设置为 1 时,返回超级表的普通列和标签列。
  • 假如结果会合的某列全部为 NULL 值,则该列的返回结果也是 NULL;
  • 假如结果会合所有列全部为 NULL 值,则不返回结果。
  • 对于存在复合主键的表的查询,若最小时间戳的数据有多条,则只有对应的复合主键最小的数据被返回。
INTERP

  1. INTERP(expr [, ignore_null_values])
  2. ignore_null_values: {
  3.     0
  4.   | 1
  5. }
复制代码
功能阐明:返回指定时间截面指定列的记录值或插值。ignore_null_values 参数的值可以是 0 或 1,为 1 时表现忽略 NULL 值,缺省值为 0。
返回数据类型:同字段类型。
实用数据类型:数值类型。
实用于:表和超级表。
利用阐明


  • INTERP 用于在指定时中断面获取指定列的记录值,假如该时中断面不存在符合条件的行数据,那么会根据 FILL 参数的设定进行插值。
  • INTERP 的输入数据为指定列的数据,可以通过条件语句(where 子句)来对原始列数据进行过滤,假如没有指定过滤条件则输入为全部数据。
  • INTERP SQL 查询需要同时与 RANGE、EVERY 和 FILL 关键字一起利用;流计算不能利用 RANGE,需要 EVERY 和 FILL 关键字一起利用。
  • INTERP 的输出时间范围根据 RANGE(timestamp1, timestamp2) 字段来指定,需满足 timestamp1 <= timestamp2。其中 timestamp1 为输出时间范围的起始值,即假如 timestamp1 时候符合插值条件则 timestamp1 为输出的第一条记录,timestamp2 为输出时间范围的竣事值,即输出的最后一条记录的 timestamp 不能大于 timestamp2。
  • INTERP 根据 EVERY(time_unit) 字段来确定输出时间范围内的结果条数,即从 timestamp1 开始每隔固定长度的时间(time_unit 值)进行插值,time_unit 可取值时间单元:1a(毫秒)、1s(秒)、1m(分)、1h(小时)、1d(天)、1w(周)。例如 EVERY(500a) 将对于指定数据每500毫秒间隔进行一次插值。
  • INTERP 根据 FILL 字段来决定在每个符合输出条件的时候怎样进行插值。关于 FILL 子句怎样利用请参考 FILL 子句
  • INTERP 可以在 RANGE 字段中只指定唯一的时间戳对单个时间点进行插值,在这种情况下,EVERY 字段可以省略。例如 SELECT INTERP(col) FROM tb RANGE('2023-01-01 00:00:00') FILL(linear)。
  • INTERP 作用于超级表时,会将该超级表下的所有子表数据按照主键列排序后进行插值计算,也可以搭配 PARTITION BY tbname 利用,将结果逼迫规约到单个时间线。
  • INTERP 可以与伪列 _irowts 一起利用,返回插值点所对应的时间戳(v3.0.2.0 以后支持)。
  • INTERP 可以与伪列 _isfilled 一起利用,表现返回结果是否为原始记录或插值算法产生的数据(v3.0.3.0 以后支持)。
  • INTERP 对于带复合主键的表的查询,若存在雷同时间戳的数据,则只有对应的复合主键最小的数据到场运算。
  • INTERP 查询支持 NEAR FILL 模式,即当需要 FILL 时,利用间隔当前时间点最近的数据进行插值,当前后时间戳与当前时中断面一样近时,FILL 前一行的值. 此模式在流计算中和窗口查询中不支持。例如 SELECT INTERP(col) FROM tb RANGE('2023-01-01 00:00:00', '2023-01-01 00:10:00') FILL(NEAR) (v3.3.4.9 及以后支持)。
  • INTERP 只有在利用 FILL PREV/NEXT/NEAR 模式时才可以利用伪列 _irowts_origin。_irowts_origin在 v3.3.4.9 及以后支持。
  • INTERP RANGE子句支持时间范围的扩展(v3.3.4.9 及以后支持),如RANGE('2023-01-01 00:00:00', 10s)表现在时间点 ‘2023-01-01 00:00:00’ 查找前后 10s 的数据进行插值,FILL PREV/NEXT/NEAR 分别表现从时间点向前/向后/前后查找数据,若时间点周围没有数据,则利用 FILL 指定的值进行插值,因此此时 FILL 子句必须指定值。例如 SELECT INTERP(col) FROM tb RANGE('2023-01-01 00:00:00', 10s) FILL(PREV, 1)。目前仅支持时间点和时间范围的组合,不支持时间区间和时间范围的组合,即不支持 RANGE('2023-01-01 00:00:00', '2023-02-01 00:00:00', 1h)。所指定的时间范围规则与 EVERY 类似,单元不能是年或月,值不能为 0,不能带引号。利用该扩展时,不支持除 FILL PREV/NEXT/NEAR 外的其他 FILL 模式,且不能指定 EVERY 子句。
LAST

  1. LAST(expr)
复制代码
功能阐明:统计表/超级表中某列的值最后写入的非 NULL 值。
返回数据类型:同应用的字段。
实用数据类型:所有字段。
实用于:表和超级表。
利用阐明:


  • 假如要返回各个列的最后(时间戳最大)一个非 NULL 值,可以利用 LAST(*);查询超级表,且 multiResultFunctionStarReturnTags 设置为 0 (默认值) 时,LAST(*) 只返回超级表的普通列;设置为 1 时,返回超级表的普通列和标签列。
  • 假如结果会合的某列全部为 NULL 值,则该列的返回结果也是 NULL;假如结果会合所有列全部为 NULL 值,则不返回结果。
  • 在用于超级表时,时间戳完全一样且同为最大的数据行大概有多个,那么会从中随机返回一条,而并不保证多次运行所挑选的数据行肯定同等。
  • 对于存在复合主键的表的查询,若最大时间戳的数据有多条,则只有对应的复合主键最大的数据被返回。
LAST_ROW

  1. LAST_ROW(expr)
复制代码
功能阐明:返回表/超级表的最后一条记录。
返回数据类型:同应用的字段。
实用数据类型:所有字段。
实用于:表和超级表。
利用阐明


  • 假如要返回各个列的最后一条记录(时间戳最大),可以利用 LAST_ROW(*);查询超级表,且 multiResultFunctionStarReturnTags 设置为 0 (默认值) 时,LAST_ROW(*) 只返回超级表的普通列;设置为 1 时,返回超级表的普通列和标签列。
  • 在用于超级表时,时间戳完全一样且同为最大的数据行大概有多个,那么会从中随机返回一条,而并不保证多次运行所挑选的数据行肯定同等。
  • 不能与 INTERVAL 一起利用。
  • 与 LAST 函数一样,对于存在复合主键的表的查询,若最大时间戳的数据有多条,则只有对应的复合主键最大的数据被返回。
MAX

  1. MAX(expr)
复制代码
功能阐明:统计表/超级表中某列的值最大值。
返回数据类型:同应用的字段。
实用数据类型:数值类型、VARCHAR、NCHAR。
实用于:表和超级表。
利用阐明


  • max 函数可以接受字符串作为输入参数,当输入参数为字符串类型时,返回最大的字符串值,从 v3.3.3.0 开始支持,之前的版本不支持字符串参数。
MIN

  1. MIN(expr)
复制代码
功能阐明:统计表/超级表中某列的值最小值。
返回数据类型:同应用的字段。
实用数据类型:数值类型、VARCHAR、NCHAR。
实用于:表和超级表。
利用阐明


  • min 函数可以接受字符串作为输入参数,当输入参数为字符串类型时,返回最大的字符串值,从 v3.3.3.0 开始支持,之前的版本不支持字符串参数。
MODE

  1. MODE(expr)
复制代码
功能阐明:返回出现频率最高的值,若存在多个频率雷同的最高值,则随机输出其中某个值。
返回数据类型:与输入数据类型同等。
实用数据类型:全部类型字段。
实用于:表和超级表。
SAMPLE

  1. SAMPLE(expr, k)
复制代码
功能阐明:获取数据的 k 个采样值。参数 k 的合法输入范围是 1≤ k ≤ 1000。
返回结果类型:同原始数据类型。
实用数据类型:全部类型字段。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
TAIL

  1. TAIL(expr, k [, offset_rows])
复制代码
功能阐明:返回跳过最后 offset_val 个,然后取连续 k 个记录,不忽略 NULL 值。offset_val 可以不输入。此时返回最后的 k 个记录。当有 offset_val 输入的情况下,该函数功能等效于 order by ts desc LIMIT k OFFSET offset_val。
参数范围:k: [1,100] offset_val: [0,100]。
返回数据类型:同应用的字段。
实用数据类型:适合于除时间主键列外的任何类型。
实用于:表、超级表。
TOP

  1. TOP(expr, k)
复制代码
功能阐明:统计表/超级表中某列的值最大 k 个非 NULL 值。假如多条数据取值一样,全部取用又会超出 k 条限制时,系统会从雷同值中随机选取符合要求的数目返回。
返回数据类型:同应用的字段。
实用数据类型:数值类型。
实用于:表和超级表。
利用阐明


  • k 值取值范围 1≤k≤100;
  • 系统同时返回该记录关联的时间戳列;
  • 限制:TOP 函数不支持 FILL 子句。
UNIQUE

  1. UNIQUE(expr)
复制代码
功能阐明:返回该列数据去重后的值。该函数功能与 distinct 相似。对于雷同的数据,返回时间戳最小的一条,对于存在复合主键的表的查询,若最小时间戳的数据有多条,则只有对应的复合主键最小的数据被返回。
返回数据类型:同应用的字段。
实用数据类型:全部类型字段。
实用于:表和超级表。
时序数据特有函数

时序数据特有函数是 TDengine 为了满足时序数据的查询场景而量身定做出来的。在通用数据库中,实现类似功能通常需要复杂的查询语法,且服从很低。TDengine 以函数的方式内置了这些功能,最大程度的减轻了用户的利用成本。
CSUM

  1. CSUM(expr)
复制代码
功能阐明:累加和(Cumulative sum),忽略 NULL 值。
返回结果类型:输入列假如是整数类型返回值为长整型(bigint),浮点数返回值为双精度浮点数(double)。无符号整数类型返回值为无符号长整型(unsigned bigint)。
实用数据类型:数值类型。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明


  • 不支持 +、-、*、/ 运算,如 csum(col1) + csum(col2)。
  • 只能与聚合(Aggregation)函数一起利用。该函数可以应用在普通表和超级表上。
DERIVATIVE

  1. DERIVATIVE(expr, time_interval, ignore_negative)
  2. ignore_negative: {
  3.     0
  4.   | 1
  5. }
复制代码
功能阐明:统计表中某列数值的单元变化率。其中单元时间区间的长度可以通过 time_interval 参数指定,最小可以是 1 秒(1s);ignore_negative 参数的值可以是 0 或 1,为 1 时表现忽略负值。对于存在复合主键的表的查询,若时间戳雷同的数据存在多条,则只有对应的复合主键最小的数据到场运算。
返回数据类型:DOUBLE。
实用数据类型:数值类型。
实用于:表和超级表。
利用阐明


  • 可以与选择相关联的列一起利用。例如 select \_rowts, DERIVATIVE(col1, 1s, 1) from tb1。
DIFF

  1. DIFF(expr [, ignore_option])
  2. ignore_option: {
  3.     0
  4.   | 1
  5.   | 2
  6.   | 3
  7. }
复制代码
功能阐明:统计表中特定列与之前行的当前列有效值之差。ignore_option 取值为 0|1|2|3,可以不填,默认值为 0.


  • 0 表现不忽略(diff结果)负值不忽略 null 值
  • 1 表现(diff结果)负值作为 null 值
  • 2 表现不忽略(diff结果)负值但忽略 null 值
  • 3 表现忽略(diff结果)负值且忽略 null 值
  • 对于存在复合主键的表的查询,若时间戳雷同的数据存在多条,则只有对应的复合主键最小的数据到场运算。
返回数据类型:bool、时间戳及整型数值类型均返回 bigint,浮点类型返回 double,若 diff 结果溢出则返回溢出后的值。
实用数据类型:数值类型、时间戳和 bool 类型。
实用于:表和超级表。
利用阐明


  • diff 是计算本行特定列与同列的前一个有效数据的差值,同列的前一个有效数据:指的是同一列中时间戳较小的最临近的非空值。
  • 数值类型 diff 结果为对应的算术差值;时间戳类型根据数据库的时间戳精度进行差值计算;bool 类型计算差值时 true 视为 1,false 视为 0
  • 如当前行数据为 null 或者没有找到同列前一个有效数据时,diff 结果为 null
  • 忽略负值时(ignore_option 设置为 1 或 3 ),假如 diff 结果为负值,则结果设置为 null,然后根据 null 值过滤规则进行过滤
  • 当 diff 结果发生溢出时,结果是否是 应该忽略的负值 取决于逻辑运算结果是正数照旧负数,例如 9223372036854775800 - (-9223372036854775806) 的值超出 BIGINT 的范围,diff 结果会表现溢出值 -10,但并不会被作为负值忽略
  • 单个语句中可以利用单个或者多个 diff,并且每个 diff 可以指定雷同或不同的 ignore_option,当单个语句中存在多个 diff 时当且仅当某行所有 diff 的结果都为 null,并且 ignore_option 都设置为忽略 null 值,该行才从结果会合剔除
  • 可以选择与相关联的列一起利用。例如 select _rowts, DIFF() from。
  • 当没有复合主键时,假如不同的子表有雷同时间戳的数据,会提示 “Duplicate timestamps not allowed”
  • 当利用复合主键时,不同子表的时间戳和主键组合大概雷同,利用哪一行取决于先找到哪一行,这意味着在这种情况下多次运行 diff() 的结果大概会不同。
IRATE

  1. IRATE(expr)
复制代码
功能阐明:计算瞬时增长率。利用时间区间中最后两个样本数据来计算瞬时增长速率;假如这两个值呈递减关系,那么只取最后一个数用于计算,而不是利用二者差值。对于存在复合主键的表的查询,若时间戳雷同的数据存在多条,则只有对应的复合主键最小的数据到场运算。
返回数据类型:DOUBLE。
实用数据类型:数值类型。
实用于:表和超级表。
MAVG

  1. MAVG(expr, k)
复制代码
功能阐明:计算连续 k 个值的移动平均数(moving average)。假如输入行数小于 k,则无结果输出。参数 k 的合法输入范围是 1≤ k ≤ 1000。
返回结果类型:DOUBLE。
实用数据类型:数值类型。
嵌套子查询支持:实用于内层查询和外层查询。
实用于:表和超级表。
利用阐明


  • 不支持 +、-、*、/ 运算,如 mavg(col1, k1) + mavg(col2, k1);
  • 只能与普通列,选择(Selection)、投影(Projection)函数一起利用,不能与聚合(Aggregation)函数一起利用;
STATECOUNT

  1. STATECOUNT(expr, oper, val)
复制代码
功能阐明:返回满足某个条件的连续记录的个数,结果作为新的一列追加在每行背面。条件根据参数计算,假如条件为 true 则加 1,条件为 false 则重置为-1,假如数据为 NULL,跳过该条数据。
参数范围


  • oper:“LT” (小于)、“GT”(大于)、“LE”(小于等于)、“GE”(大于等于)、“NE”(不等于)、“EQ”(等于),不区分大小写。
  • val:数值型
返回结果类型:INTEGER。
实用数据类型:数值类型。
嵌套子查询支持:不支持应用在子查询上。
实用于:表和超级表。
利用阐明


  • 不能和窗口操作一起利用,例如 interval/state_window/session_window。
STATEDURATION

  1. STATEDURATION(expr, oper, val, unit)
复制代码
功能阐明:返回满足某个条件的连续记录的时间长度,结果作为新的一列追加在每行背面。条件根据参数计算,假如条件为 true 则加上两个记录之间的时间长度(第一个满足条件的记录时间长度记为 0),条件为 false 则重置为-1,假如数据为 NULL,跳过该条数据。
参数范围


  • oper:'LT' (小于)、'GT'(大于)、'LE'(小于等于)、'GE'(大于等于)、'NE'(不等于)、'EQ'(等于),不区分大小写,但需要用''包罗。
  • val:数值型
  • unit:时间长度的单元,可取值时间单元:1b(纳秒)、1u(微秒)、1a(毫秒)、1s(秒)、1m(分)、1h(小时)、1d(天)、1w(周)。假如省略,默以为当前数据库精度。
返回结果类型:INTEGER。
实用数据类型:数值类型。
嵌套子查询支持:不支持应用在子查询上。
实用于:表和超级表。
利用阐明


  • 不能和窗口操作一起利用,例如 interval/state_window/session_window。
TWA

  1. TWA(expr)
复制代码
功能阐明:时间加权平均函数。统计表中某列在一段时间内的时间加权平均。对于存在复合主键的表的查询,若时间戳雷同的数据存在多条,则只有对应的复合主键最小的数据到场运算。流计算仅在 FORCE_WINDOW_CLOSE 模式下支持该函数。
返回数据类型:DOUBLE。
实用数据类型:数值类型。
实用于:表和超级表。
系统信息函数

CLIENT_VERSION

  1. SELECT CLIENT_VERSION();
复制代码
阐明:返回客户端版本。
CURRENT_USER

  1. SELECT CURRENT_USER();
复制代码
阐明:获取当前用户。
DATABASE

  1. SELECT DATABASE();
复制代码
阐明:返回当前登录的数据库。假如登录的时候没有指定默认数据库,且没有利用USE下令切换数据库,则返回NULL。
SERVER_STATUS

  1. SELECT SERVER_STATUS();
复制代码
阐明:检测服务端是否所有 dnode 都在线,假如是则返回乐成,否则返回无法建立毗连的错误。假如想要查询集群的状态,推荐利用 SHOW CLUSTER ALIVE 与 SELECT SERVER_STATUS() 不同,当集群中的部分节点不可用时,它不会返回错误,而是返回不同的状态码,详见:SHOW CLUSTER ALIVE
SERVER_VERSION

  1. SELECT SERVER_VERSION();
复制代码
阐明:返回服务端版本。
Geometry 函数

Geometry 输入函数

ST_GeomFromText

  1. ST_GeomFromText(VARCHAR WKT expr)
复制代码
功能阐明:根据 Well-Known Text (WKT) 表现从指定的几何值创建几何数据。
返回值类型:GEOMETRY。
实用数据类型:VARCHAR。
实用表类型:标准表和超表。
利用阐明:输入可以是 WKT 字符串之一,例如点(POINT)、线串(LINESTRING)、多边形(POLYGON)、多点集(MULTIPOINT)、多线串(MULTILINESTRING)、多多边形(MULTIPOLYGON)、几何集合(GEOMETRYCOLLECTION)。输出是以二进制字符串情势界说的 GEOMETRY 数据类型。
Geometry 输出函数

ST_AsText

  1. ST_AsText(GEOMETRY geom)
复制代码
功能阐明:从几何数据中返回指定的 Well-Known Text (WKT) 表现。
返回值类型:VARCHAR。
实用数据类型:GEOMETRY。
实用表类型:标准表和超表。
利用阐明:输出可以是 WKT 字符串之一,例如点(POINT)、线串(LINESTRING)、多边形(POLYGON)、多点集(MULTIPOINT)、多线串(MULTILINESTRING)、多多边形(MULTIPOLYGON)、几何集合(GEOMETRYCOLLECTION)。
Geometry 关系函数

ST_Contains

  1. ST_Contains(GEOMETRY geomA, GEOMETRY geomB)
复制代码
功能阐明:假如 A 包含 B,形貌:假如几何形状 A 包含几何形状 B,则返回 TRUE。
返回值类型:BOOL。
实用数据类型:GEOMETRY、GEOMETRY。
实用表类型:标准表和超表。
利用阐明:A 包含 B 当且仅当 B 的所有点位于 A 的内部(即位于内部或界限上)(或等效地,B 的没有点位于 A 的外部),并且 A 和 B 的内部至少有一个公共点。
ST_ContainsProperly

  1. ST_ContainsProperly(GEOMETRY geomA, GEOMETRY geomB)
复制代码
功能阐明:假如 B 的每个点都位于 A 内部,则返回 TRUE。
返回值类型:BOOL。
实用数据类型:GEOMETRY、GEOMETRY。
实用表类型:标准表和超表。
利用阐明:B 的没有点位于 A 的界限或外部。
ST_Covers

  1. ST_Covers(GEOMETRY geomA, GEOMETRY geomB)
复制代码
功能阐明:假如 B 中的每个点都位于几何形状 A 内部(与内部或界限相交),则返回 TRUE。
返回值类型:BOOL。
实用数据类型:GEOMETRY、GEOMETRY。
实用表类型:标准表和超表。
利用阐明:A 包含 B 意味着 B 中的没有点位于 A 的外部(在外部)。
ST_Equals

  1. ST_Equals(GEOMETRY geomA, GEOMETRY geomB)
复制代码
功能阐明:假如给定的几何对象是"空间相当"的,则返回 TRUE。
返回值类型:BOOL。
实用数据类型:GEOMETRY、GEOMETRY。
实用表类型:标准表和超表。
利用阐明:"空间相当"意味着 ST_Contains(A,B) = true 和 ST_Contains(B,A) = true,并且点的顺序大概不同,但表现雷同的几何结构。
ST_Intersects

  1. ST_Intersects(GEOMETRY geomA, GEOMETRY geomB)
复制代码
##功能阐明**:比力两个几何对象,并在它们相交时返回 true。
返回值类型:BOOL。
实用数据类型:GEOMETRY、GEOMETRY。
实用表类型:标准表和超表。
利用阐明:假如两个几何对象有任何一个共享点,则它们相交。
ST_Touches

  1. ST_Touches(GEOMETRY geomA, GEOMETRY geomB)
复制代码
功能阐明:假如 A 和 B 相交,但它们的内部不相交,则返回 TRUE。
返回值类型:BOOL。
实用数据类型:GEOMETRY、GEOMETRY。
实用表类型:标准表和超表。
利用阐明:A 和 B 至少有一个公共点,并且这些公共点位于至少一个界限中。对于点/点输入,关系始终为 FALSE,由于点没有界限。
访问官网

更多内容欢迎访问 TDengine 官网

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

盛世宏图

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表