将值转换为不同的类型
使用 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 和类似 RFC3339 的字符串模式
YYYY-MM-DDT00:00:00.000ZYYYY-MM-DDT00:00:00.000-00:00YYYY-MM-DD 00:00:00.000-00:00YYYY-MM-DDT00:00:00ZYYYY-MM-DD 00:00:00.000YYYY-MM-DD 00:00:00YYYY-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 支持。