当我在 Amazon Athena 表中查询时间戳数据列时,收到空结果或查询失败。数据在输入文件中。如何解决此问题?

时间戳数据的格式可能错误。Athena 需要 Java 时间戳格式:

YYYY-MM-DD HH:MM:SS.fffffffff

要将时间戳数据更改为正确的格式:

  1. 将列定义为字符串。
  2. 使用 Presto 的日期和时间函数将查询中的列读取为日期或时间戳。

将列定义为字符串

运行以下命令:

CREATE EXTERNAL TABLE 'test'(
  'ts' STRING)ROW FORMAT SERDE<  'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
LOCATION
  's3://<your-bucket>/<path-to-data>/'

使用 Presto 的日期和时间函数将查询中的列读取为日期或时间戳

如果您的输入数据采用以下格式:

20170621T015005
20170723T095605

使用 date_parse 函数,如以下示例所示:

SELECT date_parse(ts,'%Y%m%dT%h%i%s') FROM timestamptestcsv3

注意:date_parse(string,format) 函数中的格式必须是数据中使用的时间戳格式。有关更多信息,请参阅 Presto 文档中的 MySQL 日期函数

如果您的输入数据采用 ISO 8601 格式,请执行以下操作:

2018-12-24T02:34:48Z

使用 from_iso8601_timestamp() 函数将 ts 字段读取为时间戳。例如:

SELECT from_iso8601_timestamp(ts) FROM timestamptestcsv3

此页内容对您是否有帮助? |

返回 AWS Support 知识中心

需要帮助? 请访问 AWS 支持中心

发布时间:2018 年 8 月 8 日

更新时间:2019 年 1 月 17 日