将值转换为不同类型
使用 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'
)
- 科学计数法(
整数
无符号整数
转换为整数
在转换操作中使用 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函数将值转换为时间戳类型
此页面有帮助吗?
感谢您的反馈!