我们在 Athena 中有一个客户表,其中 creatied_date 和 updated_date 的格式如下
created_date : 2023-03-19T00:19:47+00:00
updated_date : 2023-03-19T00:19:49+00:00
所以对于一个特定的订单,我有 3 行,creation_date 值相同但 updated_date 值不同。
如果我想选择最新的条目,我需要比较 updated_date 值。
我计划将它们转换成 epoch_utc 和 epoch_utc_tz(时区)格式。
请给我 Athena SQL 解决方案,将 updated_date 转换为 epoch_utc 和 epoch_utc_tz 格式。
order_id created_date updated_date
123 2023-03-19T00:19:47+00:00 2023-03-19T00:19:49+00:00
123 2023-03-19T00:19:47+00:00 2023-03-20T01:34:21+00:00
123 2023-03-19T00:19:47+00:00 2023-03-19T01:09:39+00:00
如果您的日期都具有这种特殊格式并且具有相同的偏移量,则无需转换 - 只需进行比较,例如:
-- sample data
WITH dataset(order_id, created_date, updated_date) AS (
values (123, '2023-03-19T00:19:47+00:00', '2023-03-19T00:19:49+00:00'),
(123, '2023-03-19T00:19:47+00:00', '2023-03-20T01:34:21+00:00'),
(123, '2023-03-19T00:19:47+00:00', '2023-03-19T01:09:39+00:00')
)
-- query
select order_id, created_date, max(updated_date) updated_date
from dataset
group by order_id, created_date;
输出:
order_id | created_date | updated_date
----------+---------------------------+---------------------------
123 | 2023-03-19T00:19:47+00:00 | 2023-03-20T01:34:21+00:00
from_iso8601_timestamp
转换为日期(因为示例日期采用相应的格式)并比较日期:
select order_id, created_date, max(from_iso8601_timestamp(updated_date))
from dataset
group by order_id, created_date;