将值转换为不同的类型
InfluxDB 3 Core 处于公开 Alpha 阶段
InfluxDB 3 Core 处于公开 alpha 阶段,可用于测试和反馈,但不适用于生产环境。产品和本文档都在不断完善中。我们欢迎并鼓励您提供关于 alpha 体验的反馈,并邀请您加入我们的公共频道以获取更新和分享反馈。
使用 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
转换为字符串类型
在转换操作中使用 STRING
、CHAR
、VARCHAR
或 TEXT
类型,将值转换为字符串。
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 位浮点数。
SQL 支持将以下类型转换为浮点数值
字符串:返回数值字符串 (
[0-9]
) 的浮点数等效值。还支持以下字符串模式- 科学计数法 (
'123.4E+10'
) - 无穷大 (
'±Inf'
) - NaN (
'NaN'
)
- 科学计数法 (
整数
无符号整数
转换为整数
在转换操作中使用 BIGINT
类型,将值转换为 64 位有符号整数。
SQL 支持将以下类型转换为整数
- 字符串:返回数值字符串 (
[0-9]
) 的整数等效值。 - 浮点数:截断小数点后的浮点数值。
- 无符号整数:返回无符号整数的有符号整数等效值。
- 布尔值:
true
返回1
,false
返回0
。 - 时间戳:返回等效的纳秒纪元时间戳。
转换为无符号整数
在转换操作中使用 BIGINT UNSIGNED
类型,将值转换为 64 位无符号整数。
SQL 支持将以下类型转换为无符号整数
- 字符串:返回数值字符串 (
[0-9]
) 的无符号整数等效值。 - 浮点数:截断小数点后的浮点数值。
- 整数:返回有符号整数的无符号整数等效值。
- 布尔值:
true
返回1
,false
返回0
。 - 时间戳:返回等效的纳秒纪元时间戳。
转换为布尔类型
在转换操作中使用 BOOLEAN
类型,将值转换为布尔值。
SQL 支持将以下类型转换为布尔值
- 字符串
- 返回
true
'true'
(不区分大小写)'t'
, (不区分大小写)'1'
- 返回
false
'false'
(不区分大小写)'f'
(不区分大小写)'0'
- 返回
- 整数
- 返回
true
:正非零整数 - 返回
false
:0
- 返回
- 无符号整数
- 返回
true
:非零无符号整数 - 返回
false
:0
- 返回
转换为时间戳类型
在转换操作中使用 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 函数将值转换为时间戳类型
此页内容是否对您有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一份子!我们欢迎并鼓励您提供关于 InfluxDB 3 Core 和本文档的反馈和错误报告。要获取支持,请使用以下资源
拥有年度合同或支持合同的客户可以联系 InfluxData 支持。