【发布时间】:2021-09-03 08:50:49
【问题描述】:
我有一个数据集,其中包含存储为 2021-08-31 的 booking_date 字段。我需要运行一个查询,排除比特定范围更远的所有日期,即今天 +7。
使用:
SELECT *
FROM work_jobs
WHERE (cast(booking_date as date) NOT BETWEEN DATE_ADD(cast(NOW() as date), INTERVAL 1 DAY) AND NOW()) AND job_closed = 0 ORDER BY booking_date ASC;
不起作用。返回包含未来日期的完整数据集。
有什么建议吗?非常感谢。
【问题讨论】:
-
booking_date 是数据库中的 VARCHAR。
-
不起作用不是有用的错误描述。
-
如果 booking_date 是一个 varchar(顺便说一句,这是一个糟糕的决定),你应该使用 str_to_date(booking_date, '%Y-%m-%d') 而不是强制转换
-
谢谢,我会尝试...我继承了这个架构,并且知道我需要做很多更改。
-
SELECT * FROM work_jobs WHERE (str_to_date(booking_date, '%Y-%m-%d') NOT BETWEEN DATE_ADD(NOW(), INTERVAL 7 DAY) AND NOW()) AND job_closed = 0 ORDER BY booking_date ASC;仍然返回完整的数据集....
标签: mysql amazon-aurora