hive 如何过滤“INT”格式的日期列,SQL错误[58]:查询失败:13号线:无法应用运算符:integer < = date

ct3nt3jp  于 2023-10-18  发布在  Hive
关注(0)|答案(2)|浏览(116)

我有一个事务表,它的日期列保存为格式为“yyyymmdd”的INT。
我需要运行一个查询,当刷新只拉过去7天的数据价值,无论它是什么时候运行。
我尝试使用date_parse:

date_parse(cast(tbl_date as varchar),'%Y%m% d')as Date但是当我使用:
其中tbl_date >= date(current_date)-间隔'7'天

出现错误。
请帮
SQL错误[58]:查询失败:13号线:无法应用运算符:integer <= date

ddrv8njm

ddrv8njm1#

首先,我会在Postgres中做,也许会快一点。

... WHERE TO_DATE(CAST(int_date AS VARCHAR), 'YYYYMMDD') >= CURRENT_DATE - INTERVAL '7 days';

这个想法是将存储的格式转换为您可以比较的格式。有很多工具,请随意选择您喜欢的。
例如,使用MySQL,您需要一个额外的步骤:

... WHERE DATE_FORMAT(STR_TO_DATE(CAST(int_date AS CHAR(8)), '%Y%m%d'), '%Y-%m-%d') >= DATE_SUB(CURDATE(), INTERVAL 7 DAY);
mrwjdhj3

mrwjdhj32#

我解决了相当简单,但我从来没有想过,直到我读了其他答案在这里。

where date_parse(cast(tbl_date as varchar), '%Y%m%d') > date(current_date) - interval '7' day

因此,在where子句中,我使用date_parse获取日期格式,然后使用interval选择当前日期减去7。

相关问题