MySQL 查询 select 条带日期的记录

MySQL query to select records with date

我有一个数据库,其中 data_fine 定义为 TEXT 并包含诸如“25-05-2021”之类的值。我需要找到当前日期最多 8 天之间的所有记录。

我尝试了以下查询,但没有任何显示。

SELECT * from tabella_raw where data_fine > DATE(NOW) and data_fine < DATE(NOW() + INTERVAL 8 DAYS)

比较存储为 TEXT 的日期与当前日期的最佳和安全方法是什么?

尝试使用STR_TO_DATE函数

SELECT * from tabella_raw where STR_TO_DATE(data_fine, '%d-%m-%Y')  > DATE(NOW) and STR_TO_DATE(data_fine, '%d-%m-%Y') < DATE(NOW() + INTERVAL 8 DAYS)

您必须转换花费大量处理器时间的日期,因此您应该避免这种情况并将所有内容保存在 MySQL 日期 yyyy-MM-dd hh:mm:ss

您还可以使用 CURDATE() 获取当前日期

INTERVAL 的最后一个参数是 DAY不是 DAYS

SELECT STR_TO_DATE("25-05-2021",'%d-%m-%Y');
SELECT * from tabella_raw where STR_TO_DATE(data_fine,'%d-%m-%Y') > Curdate() and STR_TO_DATE(data_fine,'%d-%m-%Y') < CURDATE() + INTERVAL 8 DAY;

您正在尝试将文本字段用作日期,因此需要将文本转换为日期才能使用日期函数。