php - 如何搜索两个日期之间的记录。但表日期格式是 varchar
问题描述
我有一张桌子。其中,列名是tb_date
,即varchar
格式。在该列中保存日期,但采用不同的格式(如:01/07/201 OR 01-08-2018
或2017/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中试过了。
有什么问题?
解决方案
问题出在您的 中str_to_date(tb_date, '%d/%m/%Y')
,您提供了%d/%m/%Y
导入日期的格式,但您在此字段中有不同的格式。
我认为,您应该通过 PHP 处理所有表格,例如,通过 function 将所有日期转换为 UNIX_TIMESTAMP strtotime()
。
这将比尝试为其创建 SQL 查询更容易。
推荐阅读
- android - Android 背景上的 react-native-video 崩溃
- angular - 将活动类添加到嵌套 ngFor Angular 6 中的元素
- javascript - Chart.js 在同一组件中的 Angular 中创建多个图表
- x509 - X509 通用名称无效
- python - 找不到满足要求 tensorflow 的版本(来自版本:)没有为 tensorflow 找到匹配的分布
- angular - 如何在 Angular 6 组件中将 API 响应作为 @Input 参数传递
- jquery - 页面仅在第一次通过 jquery 在 mvc 中刷新 ajax 调用响应
- javascript - Firefox 中的 CSS3 淡入效果?
- rest - REST API 设计:如果资源在请求的表示中不可用,则以 406 或 404 响应
- ios - 多个图共享一个数据源核心图