gpt4 book ai didi

sql - 如何在Hive SQL中为日期列执行BETWEEN运算符

转载 作者:行者123 更新时间:2023-12-02 21:58:54 29 4
gpt4 key购买 nike

我将尽力解释我的问题。我想按日期过滤表(仅选择记录的日期包含在本月中),在Oracle SQL中,我使用以下查询来实现此目标:

select * from table t1 
where t1.DATE_COLUMN between TRUNC(SYSDATE, 'mm') and SYSDATE

如何在Hive SQL中复制相同的过滤器?我应该用于应用过滤器的列是 TIMESTAMP 类型的列(例如2017-05-15 00:00:00)。

我正在使用CDH 5.7.6-1。

有什么建议吗?

最佳答案

请注意,unix_timestamp不是固定的,在查询过程中会更改。
因此,它不能用于分区消除。
对于较新的Hive版本,请改用current_date / current_timestamp

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF

select  * 
from table t1
where t1.DATE_COLUMN
between cast(from_unixtime(unix_timestamp(),'yyyy-MM-01 00:00:00') as timestamp)
and cast(from_unixtime(unix_timestamp()) as timestamp)
;
select  cast (from_unixtime(unix_timestamp(),'yyyy-MM-01 00:00:00') as timestamp)
,cast (from_unixtime(unix_timestamp()) as timestamp)
;
+---------------------+---------------------+
| _c0 | _c1 |
+---------------------+---------------------+
| 2017-05-01 00:00:00 | 2017-05-16 01:04:55 |
+---------------------+---------------------+

关于sql - 如何在Hive SQL中为日期列执行BETWEEN运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43988333/

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