如何在aws athena中查询unix纪元时间戳中的时间

问题描述

我有一个简单的表,其中包含 节点、消息、开始时间、结束时间 的详细信息,其中开始时间和结束时间在 unix 时间戳中。我正在运行的查询是:

select node,message,(select from_unixtime(starttime)),(select from_unixtime(endtime)) from table1 WHERE try(select from_unixtime(starttime)) > to_iso8601(current_timestamp - interval '24' hour) limit 100

查询不起作用并抛出语法错误

我正在尝试从表中获取以下信息:

  • 使用过去“n”小时或“n”天的开始时间和结束时间查询表,并以人类可读的格式获取开始时间和结束时间的输出

  • 使用人类可读格式的特定日期和时间查询表

解决方法

您不需要“额外的”选择,也不需要在 where clasue 中使用 to_iso8601

WITH dataset AS (
    SELECT * FROM (VALUES   
       (1627409073,1627409074),(1627225824,1627225826)
 ) AS t (starttime,endtime))

SELECT from_unixtime(starttime),from_unixtime(endtime)
FROM
dataset
WHERE from_unixtime(starttime) > (current_timestamp - interval '24' hour) limit 100

输出:

_col0 _col1
2021-07-27 18:04:33.000 2021-07-27 18:04:34.000