如何搜索两个日期之间的记录。但表日期格式是 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的主要内容,如果未能解决你的问题,请参考以下文章

SQL 中 2 个日期之间的 SQL 搜索

excel中如何计算出 两个日期之间相差是多少年、月、日? 日期的格式是:2011-9-7。

mysql日期范围查找(两个日期之间的记录)

如何在 vb.net 中获取两个日期之间的记录?

CakePHP 在 2 个日期记录之间搜索

如何在两个日期之间搜索以下数据?