gpt4 book ai didi

sql - 在 Impala 中将 YYYYMMDD 字符串转换为日期

转载 作者:可可西里 更新时间:2023-11-01 14:12:47 25 4
gpt4 key购买 nike

我在 Impala 中使用 SQL 来编写此查询。我正在尝试将以 YYYYMMDD 格式存储的日期字符串转换为日期格式,以便运行如下查询:

SELECT datadate, 
session_info
FROM database
WHERE datadate >= NOW() - INTERVAL 5 DAY
ORDER BY datadate DESC;

由于 >= NOW() - INTERVAL 5 DAY 代码不适用于 YYYYMMDD 字符串,我想找到一种方法将其转换为适用的日期格式这种类型的查询。我的想法是它应该看起来像这样(基于关于其他 SQL 查询编辑器的类似问题),但它在 Impala 中不起作用:

SELECT datadate,
session_info,
convert(datetime, '20141008', 102) AS session_date
FROM database
WHERE session_date >= NOW() - INTERVAL 5 DAY
ORDER BY session_date DESC;

有人知道如何在 Impala 中执行此操作吗?

编辑:

我终于找到了解决问题的有效方法。使用 CASTCONVERT 配置的尝试在 Impala 中都不起作用,但下面的查询解决了问题并且完全可操作,允许在列上执行日期数学运算包含字符串值:

SELECT datadate,
session_info
FROM database
WHERE datadate >= from_unixtime(unix_timestamp(now() - interval 5 days), 'yyyyMMdd')
GROUP BY datadate
ORDER BY datadate DESC;

最佳答案

请参阅[链接更新于 2020-08-24] 上的时间戳文字:

https://docs.cloudera.com/cdp-private-cloud-base/7.1.3/impala-sql-reference/topics/impala-literals.html

您需要将破折号添加到您的字符串中,以便 Impala 能够将其转换为日期/时间戳。你可以用类似的东西来做到这一点:

concat_ws('-', substr(datadate,1,4), substr(datadate,5,2), substr(datadate,7) )

您可以在表达式中使用它代替 datadate

关于sql - 在 Impala 中将 YYYYMMDD 字符串转换为日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33024309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com