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;
您正在尝试将文本字段用作日期,因此需要将文本转换为日期才能使用日期函数。
我有一个数据库,其中 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;
您正在尝试将文本字段用作日期,因此需要将文本转换为日期才能使用日期函数。