将值转换为不同类型
使用 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])。支持以下字符串模式:- Scientific notation (
'123.4E+10') - Infinity (
'±Inf') - NaN (
'NaN')
- Scientific notation (
整数
无符号整数
转换为整数
在转换操作中使用 BIGINT 类型将值转换为64位带符号整数。
SQL 支持将以下内容转换为整数:
- 字符串:返回数字字符串(
[0-9])的整数等效值。 - 浮动值: 截断浮动值到小数位。
- 无符号整数: 返回无符号整数的有符号整数等价值。
- 布尔值: 返回
1表示true,返回0表示false。 - 时间戳: 返回等效的 纳秒纪元时间戳.
转换为无符号整数
在转换操作中使用 BIGINT UNSIGNED 类型将值转换为 64 位无符号整数。
SQL支持将以下内容转换为无符号整数:
- 字符串:返回数字字符串(
[0-9])的无符号整数等价。 - 浮动值: 截断浮动值到小数位。
- 整数: 返回无符号整数相当于有符号整数。
- 布尔值: 返回
1表示true,返回0表示false。 - 时间戳: 返回等效的 纳秒纪元时间戳.
转换为布尔类型
在转换操作中使用 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.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函数将值转换为时间戳类型: