如何在Hive中获取前一天的日期

new*_*bee 0 hadoop hive hiveql

我是Hive的新手。尝试使用以下查询获取前一天的日期:

SELECT MAX(id) FROM store_rcd_table
WHERE recon_dt = unix_timestamp(date_sub(from_unixtime(unix_timestamp(),
'yyyy-MM-dd'),1),'yyyy-MM-dd')
Run Code Online (Sandbox Code Playgroud)

但是获取NULL作为输出。输出应为date(2017-09-23)和MAX(id)。

也尝试过

Select MAX(id) FROM store_rcd_table
WHERE recon_dt ='2017-09-24';
Run Code Online (Sandbox Code Playgroud)

该查询也没有输出,只是输出OK。

没有得到什么问题?任何建议/帮助表示赞赏。

该表的结构为:

id              string                                      
locationid      string                                      
mngrid          string                                      
empid           string                                                                          
deleted         boolean                                     
recon_dt        string                                      
Run Code Online (Sandbox Code Playgroud)

cri*_*007 6

尝试 select date_sub(current_date, 1);

0: jdbc:hive2://hiveserver2:1> select date_sub(current_date, 1);
+-------------+--+
|     _c0     |
+-------------+--+
| 2017-09-24  |
+-------------+--+
1 row selected (0.182 seconds)
Run Code Online (Sandbox Code Playgroud)

最初的尝试是,date_sub(CAST(unix_timestamp()*1000 AS TIMESTAMP), 1)但是显然那是错误的。看评论

随时阅读Hive Date函数


如果没有结果,则应检查源数据以查看recon_dt实际数据。(还值得指出的是,您在问题中使用了两个不同的表)

  • **(1)** `current_date` 于 2015 年 5 月 18 日在 Hive 1.2.0 中引入,距今已有两年多。**(2)** 使用 `unix_timestamp` 可以防止分区消除。 (2认同)