如何在 AWS Athena 中将以下日期格式转换为 epoch_utc?

问题描述 投票:0回答:1

我们在 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
sql amazon-athena presto epoch trino
1个回答
0
投票

如果您的日期都具有这种特殊格式并且具有相同的偏移量,则无需转换 - 只需进行比较,例如:

-- 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;
© www.soinside.com 2019 - 2024. All rights reserved.