如何按今天的日期过滤ELB日志

39次阅读
没有评论

问题描述

想要按照今天的日期过滤ELB日志。他尝试了以下查询:

SELECT request_timestamp
FROM elb_logs
WHERE date_trunc('day', request_timestamp) = date_trunc('day', current_timestamp)
LIMIT 10

但是查询失败并显示以下错误信息:

SYNTAX_ERROR: line 3:7: Unexpected parameters (varchar(3), varchar) for function date_trunc. Expected: date_trunc(varchar(x), date) , date_trunc(varchar(x), time) , date_trunc(varchar(x), time with time zone) , date_trunc(varchar(x), timestamp) , date_trunc(varchar(x), timestamp with time zone)

用户已经查看了日期和时间函数和运算符文档页面,但是没有发现任何错误。用户根据此页面在Amazon Athena中创建了elb_logs表。用户想知道自己漏掉了什么。

解决方案

请注意以下操作注意版本差异及修改前做好备份。
根据用户的问题描述和最佳回答,以下是解决方案的步骤:
1. 需要将request_timestamp从ISO 8601格式的字符串转换为带有时区的时间戳,或者将current_timestamp转换为字符串。
2. 一种方法是将request_timestamp转换为格式为%Y-%m-%d的字符串,例如:
split_part(request_timestamp, 'T', 1)
substr(request_timestamp, 1, 10)
然后将其与可以转换为ISO 8601格式的字符串的current_timestamp进行比较。
3. 下面是最终的查询:

SELECT *
FROM elb_logs
WHERE split_part(request_timestamp, 'T', 1) = split_part(to_iso8601(current_timestamp), 'T', 1)
LIMIT 10

通过将request_timestampcurrent_timestamp进行适当的转换,可以按照今天的日期过滤ELB日志。

希望对你有帮助!

正文完