我有一个交易表,其中日期列以“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
首先我会在 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);
我解决了。相当简单,但我从来没有想到过,直到我读到这里的其他答案。
where date_parse(cast(tbl_date as varchar), '%Y%m%d') > date(current_date) - interval '7' day
所以在where子句中我使用date_parse来获取日期格式,然后使用interval来选择当前日期减7。
感谢所有提供帮助的人!