

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 数据类型
<a name="sql-reference-data-types"></a>

下表汇总了 Amazon Kinesis Data Analytics 支持的数据类型。


| SQL 数据类型 | JSON 数据类型 | 说明 | 注意 | 
| --- | --- | --- | --- | 
| BIGINT | 数字 | 64 位有符号整数 | 
| BINARY | BASE64-编码后的字符串 | 二进制（非字符）数据 | 子字符串适用于 BINARY。联接对 BINARY 不起作用。 | 
| BOOLEAN | 布尔值 | TRUE、FALSE 或 NULL | 计算结果为 TRUE、FALSE 和 UNKNOWN。 | 
| CHAR (n) | 字符串 | 固定长度 n 的字符串。也可指定为 CHARACTER | n 必须大于 0 且小于 65535。 | 
| DATE | 字符串 | 日期是日历日 (year/month/day)。 | 精度是日。范围介于最大值 [大约 \+229（以年为单位）] 到最小值 -229 之间。 | 
| DECIMAL<br />DEC<br />NUMERIC | 数字 | 一个固定点，最多包含 19 位有效数字。 | 可以用 DECIMAL、DEC 或 NUMERIC 指定。 | 
| DOUBLE<br />DOUBLE PRECISION | 数字 | 64 位浮点数 | 64 位近似值；-1.79E\+308 至 1.79E\+308。采用 ISO DOUBLE PRECISION 数据类型，53 位用于科学计数法中的数字尾数，表示 15 位数的精度和 8 字节的存储空间。 | 
| INTEGER<br />INT | 数字 |   | 32 位带符号的整数。范围介于 -2147483648 到 2147483647 [ 2\*\*(31) to 2\*\*(31)- 1] 之间 | 
| INTERVAL <timeunit> [TO <timeunit>] | 字符串 | 支持日-时间间隔，不支持年-月间隔 | 在采用日期算法的表达式中允许，但不可用作表或流中列的数据类型。 | 
| <timeUnit> | 字符串 | INTERVAL 值的单位 | 支持的单位为 YEAR、MONTH、DAY、HOUR、MINUTE 和 SECOND | 
| SMALLINT | 数字 | 16 位有符号整数 | 范围介于 -32768 到 32767 之间 <br />[2\*\*(15) to 2\*\*(15)-1] | 
| REAL | 数字 | 32 位浮点数 | 采用 ISO REAL 数据类型，24 位用于科学计数法中的数字尾数，表示 7 位数的精度和 4 字节的存储空间。最小值为 -3.40E\+38；最大值为 3.40E\+38。 | 
| TIME | 字符串 | TIME 是一天中的时间 (hour:minute:second)。 | 其精度是毫秒；其范围是 00:00:00.000 到 23:59:59.999。由于系统时钟采用 UTC，因此不考虑用于 TIME 或 TIMESTAMP 列中存储的值的时区。<br />用于 TIME 或 TIMESTAMP 列中存储的值。 | 
| TIMESTAMP | 字符串 | TIMESTAMP 是 DATE 和 TIME 的组合。 | TIMESTAMP 值的精度始终为 1 毫秒。没有特定的时区。由于系统时钟采用 UTC，因此不考虑用于 TIME 或 TIMESTAMP 列中存储的值的时区。范围介于最大值 [大约 \+229（以年为单位）] 到最小值 -229 之间。每个时间戳都存储为带符号的 64 位整数，其中 0 表示 Unix 时代 (1970 年 1 月 1 日零点)。这意味着最大的 TIMESTAMP 值代表 1970 年之后的大约 3 亿年，最小的值代表 1970 年之前的大约 3 亿年。根据 SQL 标准，TIMESTAMP 值的时区未定义。 | 
| TINYINT | 数字 | 8 位有符号整数 | 范围介于 -128 到 127 之间 | 
| VARBINARY (n) | BASE64-编码后的字符串 | 也可指定为 BINARY VARYING | n 必须大于 0 且小于 65535。 | 
| VARCHAR (n) | 字符串 | 也可指定为 CHARACTER VARYING | n 必须大于 0 且小于 65535。 | 
<a name="NOTE1"></a>
**注意**  
关于字符：
+ 亚马逊 Kinesis Data Analytics 仅支持 Java 单字节字符 SETs。
+ 不支持隐式类型转换。也就是说，当且仅当字符取自相同的字符库并且是数据类型为 CHARACTER 或 CHARACTER VARYING 的值时，字符才可以相互分配。

关于数字：
+ 如果数字是数据类型为 NUMERIC、DECIMAL、INTEGER、BIGINT、SMALLINT、TINYINT、REAL 和 DOUBLE PRECISION 的值，则可以相互比较和相互分配。

以下数据类型集是同义词：
+ DEC 和 DECIMAL
+ DOUBLE PRECISION 和 DOUBLE
+ CHARACTER 和 CHAR
+ CHAR VARYING 或 CHARACTER VARYING 和 VARCHAR
+ BINARY VARYING 和 VARBINARY
+ INT 和 INTEGER
+ 二进制值（数据类型为 BINARY 和 BINARY VARYING）始终可以相互比较，并且可以相互分配。

关于日期、时间和时间戳：
+ 不支持隐式类型转换（也就是说，只有当分配的源和目标都是 DATE、TIME 或 TIMESTAMP 类型时，日期时间值才可以相互分配）。
+ Amazon Kinesis Data Analytics 时区始终采用 UTC。时间函数，包括 Amazon Kinesis Data Analytics 扩展 CURRENT\_ROW\_TIMESTAMP，以 UTC 返回时间。