我有一个事务表,它的日期列保存为格式为“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
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);
mrwjdhj32#
我解决了相当简单,但我从来没有想过,直到我读了其他答案在这里。
where date_parse(cast(tbl_date as varchar), '%Y%m%d') > date(current_date) - interval '7' day
因此,在where子句中,我使用date_parse获取日期格式,然后使用interval选择当前日期减去7。
where
date_parse
2条答案
按热度按时间ddrv8njm1#
首先,我会在Postgres中做,也许会快一点。
这个想法是将存储的格式转换为您可以比较的格式。有很多工具,请随意选择您喜欢的。
例如,使用MySQL,您需要一个额外的步骤:
mrwjdhj32#
我解决了相当简单,但我从来没有想过,直到我读了其他答案在这里。
因此,在
where
子句中,我使用date_parse
获取日期格式,然后使用interval选择当前日期减去7。