首页 > 解决方案 > 因为我们在新的一年,MySQL 没有返回上个月的数据

问题描述

我有以下 SQL

SELECT * FROM TABLE_NAME where dateSold <= '01/01/2021' and dateSold > '12/01/2020' and cardId = 'BZPcJP3eXaJLT3J' and ImageAccepted = 'accepted' order by dateSold asc

这不会返回表中的任何内容,但有条目,请参见下图。

在此处输入图像描述

标签: mysqlsql

解决方案


将 varChar 用于 Date 并不是一个好习惯。

您可以在当前的 varChar 字段上运行以下命令。

SELECT * FROM TABLE_NAME where str_to_date(dateSold, '%m/%d/%Y') <= '01/01/2021' 
AND str_to_date(dateSold, '%m/%d/%Y') > '12/01/2020' 
AND cardId = 'BZPcJP3eXaJLT3J' 
AND ImageAccepted = 'accepted' 
ORDER BY date_format(str_to_date(dateSold, '%m/%d/%Y') ASC;

您可以通过创建一个默认为 NULL 的新“日期”字段将 varChar 数据转换为日期,并通过运行以下命令将数据从“dateSold”复制到新字段:

Update TABLE_NAME set dateNew = date(str_to_date(dateSol, '%m/%d/%Y'));

运行此命令后,从 Default 中删除 Null。


推荐阅读