Hive Amazon Athena时间日期作为字符串列
Athena分区按年/月/日进行划分,并通过GLUE作为字符串列导入。因此,day是一个字符串类型。我的要求是从当前时间戳中提取日期,并与我的日期列/分区进行比较Hive Amazon Athena时间日期作为字符串列,hive,hiveql,presto,amazon-athena,Hive,Hiveql,Presto,Amazon Athena,Athena分区按年/月/日进行划分,并通过GLUE作为字符串列导入。因此,day是一个字符串类型。我的要求是从当前时间戳中提取日期,并与我的日期列/分区进行比较 SELECT * FROM "db1"."tbl1" WHERE year = cast(extract(year from (CURRENT_DATE - interval '7' day)) as varchar) AND month = lpad(cast(extract(month from (CURRENT_DATE -
SELECT *
FROM "db1"."tbl1"
WHERE year = cast(extract(year from (CURRENT_DATE - interval '7' day)) as varchar)
AND month = lpad(cast(extract(month from (CURRENT_DATE - interval '7' day)) as varchar),2,'0')
AND day = lpad(cast(extract(day from (CURRENT_DATE - interval '7' day)) as varchar),2,'0')
limit 10
这是一天。我想要从现在到过去7天之间的所有天数。我通过创建过去7天的序列并从这些值中提取年、月和日来实现这一点。我的Athena数据中的年/月/日列存储为整数,因此我不需要转换
EXTRACT
函数的结果,但我在这个答案中转换结果以匹配您的用例
-- there may be a more elegant approach, but this worked for me
-- create a CTE containing the last seven dates
WITH dates AS (
SELECT
date_add('day', n, current_date) AS date
FROM (
SELECT
ROW_NUMBER() OVER ()-7 AS n
FROM db1.tbl1
LIMIT 7
)
),
-- extract the year, month, and day for joining
date_parts AS (
SELECT
CAST(EXTRACT(YEAR FROM date) AS VARCHAR) AS year,
CAST(EXTRACT(MONTH FROM date) AS VARCHAR) AS month,
CAST(EXTRACT(DAY FROM date) AS VARCHAR) AS day
FROM dates
)
-- return all results from the last seven days
SELECT
*
FROM date_parts AS dp
JOIN db1.tbl1 AS t1 ON dp.year = t1.year AND dp.month = t1.month AND dp.day = t1.day;
处理presto文档我认为
date\u parse
是一种更简单的方法。以下是步骤
选择当前日期
CONCAT CONCAT(年、月、日)
然后date\u parse
cast(date_parse(concat(year, month, day), '%Y%m%d') as date) BETWEEN current_date - interval '7' day AND current_date
[