如何过滤“INT”格式的日期列。 SQL 错误 [58]:查询失败:第 13:13 行:无法应用运算符:整数 <= date

问题描述 投票:0回答:2

我有一个交易表,其中日期列以“yyyymmdd”格式保存为 INT。

我需要运行一个查询,该查询在刷新时仅提取最近 7 天的数据,无论何时运行。

我尝试使用 date_parse:

**date_parse(cast(tbl_date as varchar), '%Y%m%d') 作为日期 ** 但当我使用:

**其中 tbl_date >= date(current_date) - 间隔“7”天 **

我收到错误。

请帮忙

SQL 错误 [58]:查询失败:第 13:13 行:无法应用运算符:整数 <= date

sql hive dbeaver
2个回答
0
投票

首先我会在 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);

0
投票

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

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

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

感谢所有提供帮助的人!

© www.soinside.com 2019 - 2024. All rights reserved.