有没有办法使用 mySQL 和 PrestoDB 在时间戳很大时在 AWS Athena 中提取数据范围?



我正试图从一个表中查询,我特别感兴趣的是从timestamp列中提取最后7天。timestamp列已作为big int存储在表中。

在使用FROM_UNIXTIME(时间戳(将"big-int"时间戳转换为"datetime"后,我尝试使用此方法。

我试图提取过去7天(从11月15日起(的时间戳的查询如下-

SELECT * FROM activation WHERE FROM_UNIXTIME(timestamp) > '+51819-11-15' LIMIT 10;

基本上,在将"big int"转换为"datetime"后,我查看了时间戳列,提取了一个日期,在上面的示例中,该日期显示我获取的数据是2019年11月15日(根本不是运行此查询的最有效方式(

当我在Athena中运行查询时,我得到以下错误-

SYNTAX_ERROR: line 1:57: '>' cannot be applied to timestamp, varchar(12)

有人能帮我找到一个更好/更有效的方法在雅典娜实现这一目标吗。

谢谢!

我建议颠倒逻辑,将存储的unix时间戳与表示7天前时间戳的值进行比较。这种方法的优点是查询将愉快地使用timestamp列上的现有索引。

在MySQL中:

SELECT * FROM activation WHERE timestamp > UNIX_TIMESTAMP() - 7 * 24 * 60 * 60 LIMIT 10;

7 * 24 * 60 * 60将7天表示为秒。

这也可以表示为:

SELECT * FROM activation WHERE timestamp > UNIX_TIMESTAMP(NOW() - INTERVAL 7 DAY) LIMIT 10;

在PrestoDB:

SELECT * 
FROM activation 
WHERE timestamp > TO_UNIXTIME(CURRENT_TIMESTAMP - INTERVAL '7' DAY) LIMIT 10;

相关内容

  • 没有找到相关文章

最新更新