我不熟悉这个平台。试图在Hive中完成任务但未能完成。
有一个具有以下结构的表: Table1:
ID DATE VAL1 VAL2 VAL3 01 12/12/2017 12.23 56.45 78.9 02 05/06/2019 65.88 65.22 98.22 03 09/08/2018 86.00 23.00 56.05 04 09/19/2019 34.09 75.04 77.89 05 03/16/2018 87.45 45.56 89.89 06 06/06/2018 67.66 45.00 67.90 07 01/01/2018 23.21 90.99 56.33 08 07/03/2018 67.22 67.22 33.11 09 05/13/2017 12.12 98.33 78.89
DataTypes:
ID INT DATE STRING VAL1 DOUBLE VAL2 DOUBLE VAL3 DOUBLE
Hive Query:
```
SELECT * FROM Table1 WHERE DATE BETWEEN date_format(current_date +
interval '-12' month,'MM/dd/YYYY') AND
date_format(current_date,'MM/dd/YYYY');
上述查询不是从表中获取记录。 `Actual O/P:` ```
OK
Time taken: 65.515 seconds
hive>
``` `Expected O/P:` ```
ID DATE VAL1 VAL2 VAL3
02 05/06/2019 65.88 65.22 98.22
03 09/08/2018 86.00 23.00 56.05
04 09/19/2019 34.09 75.04 77.89
06 06/06/2018 67.66 45.00 67.90
08 07/03/2018 67.22 67.22 33.11
任何帮助指出查询中的错误或遗漏部分都会非常有用。提前谢谢。
2条答案
按热度按时间wkyowqbh1#
您使用的格式不正确。正确的格式是
'MM/dd/yyyy'
,不是'MM/dd/YYYY'
. 您的日期不是可排序格式,这就是为什么需要将列日期转换为可排序格式'yyyy-MM-dd'
申请前BETWEEN
过滤器:为了更好地理解,请考虑以下示例,比较不可排序格式的两个日期:
这就是为什么
BETWEEN
操作员将不正确地处理这些日期。让我们以正确的格式比较相同的日期:
另请参见SimpleDataFormat类文档作为格式模板参考。
jhiyze9q2#
首先更新中的数据类型
[Date]
列组件DATE or DATETIME
在你的table上。然后执行此查询