如何搜索两个日期之间的记录。但表日期格式是 varchar

Posted

技术标签:

【中文标题】如何搜索两个日期之间的记录。但表日期格式是 varchar【英文标题】:how to search records beetween two dates. But table date format is varchar 【发布时间】:2018-12-11 10:54:19 【问题描述】:

我有一张桌子。其中,列名为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中试过了。

有什么问题?

【问题讨论】:

首先,清理数据。 【参考方案1】:

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

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

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

【讨论】:

以上是关于如何搜索两个日期之间的记录。但表日期格式是 varchar的主要内容,如果未能解决你的问题,请参考以下文章