Documentation

将值转换为不同类型

使用 CAST 函数或双冒号 :: 类型转换简写语法将值转换为特定类型。

-- CAST function
SELECT CAST(1234.5 AS BIGINT)

-- Double-colon casting shorthand
SELECT 1234.5::BIGINT

可以对列表达式或文字值执行类型转换操作。 例如,以下查询使用了 获取开始的示例数据 和:

  • time 列中的所有值转换为整数(Unix 纳秒时间戳)。
  • 将字面字符串值 '1234' 转换为每行的64位浮点数。
SELECT
  time::BIGINT AS unix_time,
  '1234'::DOUBLE AS string_to_float
FROM home
LIMIT 5
SELECT
  CAST(time AS BIGINT) AS unix_time,
  CAST('1234' AS DOUBLE) AS string_to_float
FROM home
LIMIT 5
时间戳字符串转浮点数
16410240000000000001234
16410276000000000001234
16410312000000000001234
16410348000000000001234
16410384000000000001234

转换为字符串类型

在转换操作中使用 STRINGCHARVARCHARTEXT 类型将值转换为字符串。

value::STRING
value::CHAR
value::VARCHAR
value::TEXT
CAST(value AS STRING)
CAST(value AS CHAR)
CAST(value AS VARCHAR)
CAST(value AS TEXT)

SQL 支持将以下内容转换为字符串值:

  • 浮动
  • 整数
  • 无符号整数
  • 布尔值
  • 时间戳

转换为数值类型

InfluxDB SQL 实现支持 64 位浮点数 (DOUBLE), 整数 (BIGINT) 和无符号整数 (BIGINT UNSIGNED)。

转换为浮点数

在转换操作中使用 DOUBLE 类型将值转换为64位浮点数。

value::DOUBLE
CAST(value AS DOUBLE)

SQL 支持将以下内容转换为浮点值:

  • 字符串: 返回数字字符串的浮点数等效值 ([0-9])。支持以下字符串模式:

    • Scientific notation ('123.4E+10')
    • Infinity ('±Inf')
    • NaN ('NaN')
  • 整数

  • 无符号整数

转换为整数

在转换操作中使用 BIGINT 类型将值转换为64位带符号整数。

value::BIGINT
CAST(value AS BIGINT)

SQL 支持将以下内容转换为整数:

  • 字符串:返回数字字符串([0-9])的整数等效值。
  • 浮动值: 截断浮动值到小数位。
  • 无符号整数: 返回无符号整数的有符号整数等价值。
  • 布尔值: 返回 1 表示 true,返回 0 表示 false
  • 时间戳: 返回等效的 纳秒纪元时间戳.

转换为无符号整数

在转换操作中使用 BIGINT UNSIGNED 类型将值转换为 64 位无符号整数。

value::BIGINT UNSIGNED
CAST(value AS BIGINT UNSIGNED)

SQL支持将以下内容转换为无符号整数:

  • 字符串:返回数字字符串([0-9])的无符号整数等价。
  • 浮动值: 截断浮动值到小数位。
  • 整数: 返回无符号整数相当于有符号整数。
  • 布尔值: 返回 1 表示 true,返回 0 表示 false
  • 时间戳: 返回等效的 纳秒纪元时间戳.

转换为布尔类型

在转换操作中使用 BOOLEAN 类型将值转换为布尔值。

value::BOOLEAN
CAST(value AS BOOLEAN)

SQL 支持将以下内容转换为布尔值:

  • 字符串
    • 返回 true:
      • 'true' (不区分大小写)
      • 't', (不区分大小写)
      • '1'
    • 返回 false:
      • 'false' (不区分大小写)
      • 'f' (不区分大小写)
      • '0'
  • 整数
    • 返回 true: 正的非零整数
    • 返回 false: 0
  • 无符号整数
    • 返回 true: 非零无符号整数
    • 返回 false: 0

转换为时间戳类型

在类型转换操作中使用 TIMESTAMP 类型将值转换为时间戳。

value::TIMESTAMP
CAST(value AS TIMESTAMP)

SQL 支持将以下内容转换为时间戳:

  • 字符串: 返回字符串值的时间戳等效值。 支持以下RFC3339和类似RFC339的字符串模式:

    • YYYY-MM-DDT00:00:00.000Z
    • YYYY-MM-DDT00:00:00.000-00:00
    • YYYY-MM-DD 00:00:00.000-00:00
    • YYYY-MM-DDT00:00:00Z
    • YYYY-MM-DD 00:00:00.000
    • YYYY-MM-DD 00:00:00
    • YYYY-MM-DD
  • 整数: 将整数解析为 Unix 时间戳并返回相应的时间戳。

  • 无符号整数: 解析无符号整数作为Unix纳秒时间戳并返回等效的时间戳。

将Unix纳秒时间戳转换为时间戳类型

要将Unix纳秒时间戳转换为时间戳类型,首先将数值转换为无符号整数(BIGINT UNSIGNED),然后再转换为时间戳。您还可以使用to_timestamp_nanos函数。

1704067200000000000::BIGINT UNSIGNED::TIMESTAMP
CAST(CAST(1704067200000000000 AS BIGINT UNSIGNED) AS TIMESTAMP)
to_timestamp_nanos(1704067200000000000)

时间戳函数

您还可以使用以下SQL函数将值转换为时间戳类型:



Flux的未来

Flux 正在进入维护模式。您可以像现在一样继续使用它,而无需对您的代码进行任何更改。

阅读更多

InfluxDB 3 开源版本现已公开Alpha测试

InfluxDB 3 Open Source is now available for alpha testing, licensed under MIT or Apache 2 licensing.

我们将发布两个产品作为测试版的一部分。

InfluxDB 3 核心,是我们新的开源产品。 它是一个用于时间序列和事件数据的实时数据引擎。 InfluxDB 3 企业版是建立在核心基础之上的商业版本,增加了历史查询能力、读取副本、高可用性、可扩展性和细粒度安全性。

有关如何开始的更多信息,请查看:

InfluxDB 云端无服务器