Presto TIMESTAMP 从 2 天前获取数据而不输入年月日期?
Posted
技术标签:
【中文标题】Presto TIMESTAMP 从 2 天前获取数据而不输入年月日期?【英文标题】:Presto TIMESTAMP get data from 2 days ago without inputting year month date? 【发布时间】:2020-12-29 14:25:32 【问题描述】:我的目标是让查询获取 2 天前的数据。我不想一直这样输入日期:
WHERE usage_start_date
BETWEEN TIMESTAMP '2020-09-09 00:00:00.000' and TIMESTAMP '2020-09-09
23:59:59.999'
而是类似:
usage_start_date = current_date - interval '2' day
以上内容适用于我的 Athena Presto SQL 查询,但由于某种原因,不会提供这 24 小时内运行的所有数据,而是提供大约半天的时间。有没有办法做这样的声明,以确保它提供当天的所有数据?
WHERE current_date - interval '2' day AND
BETWEEN TIMESTAMP '00:00:00.000' and TIMESTAMP '23:59:59.999'
不输入年、月、日?似乎 TIMESTAMP 需要 y/m/d,但是如果做一个 LIKE 来获取小时、分钟、秒但不需要输入 y/m/d 呢?
【问题讨论】:
您可以尝试 select * from table where hour(usage_start_date) 在 0 到 23 和 current_date - interval '2' day = date(usage_start_date) 并告诉我这是否适用于您的用例?usage_start_date
的数据类型是什么?
@PrabhakarReddy 这行得通!谢谢...请作为答案提交,以便我选择最佳答案
@MartinTraverso 字符串
【参考方案1】:
要获得两天前一天开始的时间戳,您可以这样做
DATE_TRUNC('day', NOW() - INTERVAL '2' DAY)
例如
WHERE usage_start_date >= DATE_TRUNC('day', NOW() - INTERVAL '2' DAY)
AND usage_start_date < DATE_TRUNC('day', NOW() - INTERVAL '1' DAY)
【讨论】:
【参考方案2】:您可以使用以下查询通过从 usage_start_date 获取小时和日期来完成任务
select * from table where hour(usage_start_date) between 0 and 23 and current_date - interval '2' day = date(usage_start_date)
【讨论】:
【参考方案3】:我建议:
WHERE usage_start_date >= CURRENT_DATE - INTERVAL '2' DAY AND
usage_start_date < CURRENT_DATE - INTERVAL '1' DAY
【讨论】:
以上是关于Presto TIMESTAMP 从 2 天前获取数据而不输入年月日期?的主要内容,如果未能解决你的问题,请参考以下文章