

# Amazon Athena 中的数据类型
<a name="data-types"></a>

运行 `CREATE TABLE` 时，您可以指定列名以及每列可以包含的数据类型。所创建的表存储在 AWS Glue Data Catalog 中。

为了促进与其他查询引擎的互操作性，Athena 对 DDL 语句（例如 `CREATE TABLE`）使用 [Apache Hive](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types) 数据类型名称。对于像 `SELECT`、`CTAS` 和 `INSERT INTO` 这样的 DML 查询，Athena 则使用 [Trino](https://trino.io/docs/current/language/types.html) 数据类型名称。下表显示了 Athena 支持的数据类型。如果 DDL 和 DML 类型在名称、可用性或语法方面存在差异，则会显示在不同的列中。


****  

<table>
<thead>
  <tr><th>DDL</th><th>DML</th><th>说明</th></tr>
</thead>
<tbody>
  <tr><td colspan="2">BOOLEAN</td><td>值包括 true 和 false。</td></tr>
  <tr><td colspan="2">TINYINT</td><td>一个 8 位有符号的整数，采用二进制补码格式，最小值为 -27，最大值为 27-1。</td></tr>
  <tr><td colspan="2">SMALLINT</td><td>一个 16 位有符号的整数，采用二进制补码格式，最小值为 -215，最大值为 215-1。</td></tr>
  <tr><td colspan="2">INT，INTEGER</td><td>一个 32 位有符号的值，采用二进制补码格式，最小值为 -231，最大值为 231-1。</td></tr>
  <tr><td colspan="2">BIGINT</td><td> 一个 64 位有符号的整数，采用二进制补码格式，最小值为 -263，最大值为 263-1。</td></tr>
  <tr><td>FLOAT</td><td>REAL</td><td>一个 32 位有符号的单精度浮点数。范围为 1.40129846432481707e-45 至 3.40282346638528860e\+38，可以为正数，也可以为负数。遵循 IEEE 浮点运算标准（IEEE 754）。</td></tr>
  <tr><td colspan="2">DOUBLE</td><td>一个 64 位有符号的双精度浮点数。范围为 4.94065645841246544e-324d 至 1.79769313486231570e\+308d，可以为正数，也可以为负数。遵循 IEEE 浮点运算标准（IEEE 754）。</td></tr>
  <tr><td colspan="2">DECIMAL({{precision}}, {{scale}})</td><td>{{precision}} 是总位数；{{scale}}（可选）是小数部分的位数，默认值为 0。例如，使用以下类型定义：decimal(11,5)、decimal(15)。最大{{精度}}值为 38，最大{{标度}}值为 38。</td></tr>
  <tr><td colspan="2">CHAR、CHAR({{length}})</td><td>固定长度字符数据，指定长度介于 1 到 255 之间，例如 char(10)。如果指定了 {{length}}，则读取字符串时，字符串将按指定长度进行截断。如果底层数据字符串较长，则底层数据字符串将保持不变。<br />有关更多信息，请参阅 [CHAR Hive 数据类型](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types#LanguageManualTypes-char)。</td></tr>
  <tr><td>string</td><td>VARCHAR</td><td>长度可变的字符数据。</td></tr>
  <tr><td colspan="2">VARCHAR({{length}})</td><td>具有最大读取长度的长度可变的字符数据。读取字符串时，字符串将按指定长度进行截断。如果底层数据字符串较长，则底层数据字符串将保持不变。</td></tr>
  <tr><td>BINARY</td><td>VARBINARY</td><td>长度可变的二进制数据。</td></tr>
  <tr><td>不可用</td><td>TIME</td><td>一天中的某个时间，精确到毫秒。</td></tr>
  <tr><td>不可用</td><td>TIME({{precision}})</td><td>一天中的某个时间，具有具体精度。TIME(3) 等同于 TIME。</td></tr>
  <tr><td>不可用</td><td>带时区的时间</td><td>某个时区一天中的某个时间。应将时区指定为 UTC 的偏移量。</td></tr>
  <tr><td colspan="2">DATE</td><td>包含年、月、日的某个日历日期。</td></tr>
  <tr><td>TIMESTAMP</td><td>TIMESTAMP、TIMESTAMP WITHOUT TIME ZONE</td><td>某个日历日期一天中的某个时间，精确到毫秒。</td></tr>
  <tr><td>不可用</td><td>TIMESTAMP({{precision}})、TIMESTAMP({{precision}}) WITHOUT TIME ZONE</td><td>某个日历日期一天中的某个时间，具有具体精度。TIMESTAMP(3) 等同于 TIMESTAMP。</td></tr>
  <tr><td>不可用</td><td>TIMESTAMP（有时区）</td><td>在某个时区中，某个日历日期一天中的某个时间。可以将时区指定为 UTC 的偏移量、IANA 时区名称或使用 UTC、UT、Z 或 GMT。</td></tr>
  <tr><td>不可用</td><td>TIMESTAMP({{precision}}) WITH TIME ZONE</td><td>在某个时区中，某个日历日期一天中的某个时间，具有具体精度。</td></tr>
  <tr><td>不可用</td><td>INTERVAL YEAR TO MONTH</td><td>间隔为一个月或数个整月</td></tr>
  <tr><td>不可用</td><td>INTERVAL DAY TO SECOND</td><td>间隔为一或数秒/分钟/小时/日</td></tr>
  <tr><td>ARRAY<{{element\_type}}></td><td>ARRAY[{{element\_type}}]</td><td>值的数组。所有值都必须具有相同数据类型。</td></tr>
  <tr><td>MAP<{{key\_type}}, {{value\_type}}></td><td>MAP({{key\_type}}, {{value\_type}})</td><td>可以通过键查找值的映射。所有密钥和所有值都必须具有相同数据类型。例如 map<string, integer>。</td></tr>
  <tr><td>STRUCT<{{field\_name\_1}}:{{field\_type\_1}}, {{field\_name\_2}}:{{field\_type\_2}}, …></td><td>ROW({{field\_name\_1}} {{field\_type\_1}}, {{field\_name\_2}} {{field\_type\_2}}, …)</td><td>包含命名字段及其值的数据结构。</td></tr>
  <tr><td>不可用</td><td>JSON</td><td>JSON 值类型，可以是 JSON 对象、JSON 数组、JSON 数字、JSON 字符串、true、false 或 null。</td></tr>
  <tr><td>不可用</td><td>UUID</td><td>UUID，全称通用唯一标识符。</td></tr>
  <tr><td>不可用</td><td>IPADDRESS</td><td>IPv4 或 IPv6 地址。</td></tr>
  <tr><td rowspan="5">不可用</td><td>[HyperLogLog](https://trino.io/docs/current/language/types.html#hyperloglog-type)</td><td rowspan="5">这些数据类型支持近似的函数内部构成。有关各种类型的更多信息，请访问 Trino 文档中相应条目的链接。</td></tr>
  <tr><td>[P4HyperLogLog](https://trino.io/docs/current/language/types.html#p4hyperloglog)</td></tr>
  <tr><td>[SetDigest](https://trino.io/docs/current/language/types.html#setdigest)</td></tr>
  <tr><td>[QDigest](https://trino.io/docs/current/language/types.html#quantile-digest)</td></tr>
  <tr><td>[TDigest](https://trino.io/docs/current/language/types.html#t-digest)</td></tr>
</tbody>
</table>


**Topics**
+ [数据类型示例](data-types-examples.md)
+ [数据类型的注意事项](data-types-considerations.md)
+ [处理时间戳数据](data-types-timestamps.md)