文档化档

将值转换为不同类型

使用 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
unix_timestring_to_float
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])。以下字符串模式也受支持

    • 科学计数法('123.4E+10'
    • 无穷大('±Inf'
    • 非数字('NaN'
  • 整数

  • 无符号整数

转换为整数

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

value::BIGINT
CAST(value AS BIGINT)

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

  • 字符串:返回数值字符串([0-9])的整数等效值。
  • 浮点数:截断浮点数的十进制部分。
  • 无符号整数:返回无符号整数的有符号整数等效值。
  • 布尔值:对于true返回1,对于false返回0
  • 时间戳:返回等效的纳秒纪元时间戳

转换为无符号整数

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

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

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

  • 字符串:返回数值字符串([0-9])的无符号整数等效值。
  • 浮点数:截断浮点数的十进制部分。
  • 整数:返回有符号整数的无符号整数等效值。
  • 布尔值:对于true返回1,对于false返回0
  • 时间戳:返回等效的纳秒纪元时间戳

转换为布尔类型

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

value::BOOLEAN
CAST(value AS BOOLEAN)

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

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

转换为时间戳类型

在转换操作中使用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 v3增强和InfluxDB集群版现已正式发布

新功能包括更快的查询性能和管理工具,推动了InfluxDB v3产品线的进步。InfluxDB集群版现已正式发布。

InfluxDB v3性能和功能

InfluxDB v3产品线在查询性能方面取得了显著提升,并提供了新的管理工具。这些增强包括一个操作仪表板来监控您的InfluxDB集群的健康状况,InfluxDB云专享版中的单点登录(SSO)支持,以及用于令牌和数据库的新管理API。

了解新的v3增强功能


InfluxDB集群版正式发布

InfluxDB集群版现已正式发布,为您在自管理的堆栈中提供了InfluxDB v3的功能。

与我们谈论InfluxDB集群版