首页 > 解决方案 > 如何搜索两个日期之间的记录。但表日期格式是 varchar

问题描述

我有一张桌子。其中,列名是tb_date,即varchar格式。在该列中保存日期,但采用不同的格式(如:01/07/201 OR 01-08-20182017/03/12等)。现在我想在给定日期之间进行搜索。但它不起作用。我尝试过这个-

SELECT * FROM `user_History` WHERE date_format(str_to_date(`tb_date`, '%d/%m/%Y'), '%d/%m/%Y') BETWEEN '01/06/2018' AND '31/06/2018'

但它给出了所有记录。我在我的sql中试过了。

有什么问题?

标签: phpmysqlsqlajaxmysqli

解决方案


问题出在您的 中str_to_date(tb_date, '%d/%m/%Y'),您提供了%d/%m/%Y导入日期的格式,但您在此字段中有不同的格式。

我认为,您应该通过 PHP 处理所有表格,例如,通过 function 将所有日期转换为 UNIX_TIMESTAMP strtotime()

这将比尝试为其创建 SQL 查询更容易。


推荐阅读