当使用 mySQL 和 PrestoDB 的时间戳是 big int 时,有没有办法在 AWS Athena 中拉取数据范围?
Is there a way to pull data-range in AWS Athena when the timestamp is big int using mySQL & PrestoDB?
我正在尝试从 table 进行查询,我特别感兴趣的是从 timestamp
列中提取过去 7 天的数据。 timestamp
列已作为 big int
存储在 table 中。
我在使用 FROM_UNIXTIME(timestamp) 将 '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)
谁能帮我用更 better/efficient 的方法在 Athena 中实现这一目标。
谢谢!
我建议反转逻辑并将存储的 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;
我正在尝试从 table 进行查询,我特别感兴趣的是从 timestamp
列中提取过去 7 天的数据。 timestamp
列已作为 big int
存储在 table 中。
我在使用 FROM_UNIXTIME(timestamp) 将 '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)
谁能帮我用更 better/efficient 的方法在 Athena 中实现这一目标。
谢谢!
我建议反转逻辑并将存储的 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;