作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用此查询来选择日期之间的数据:
SELECT id, date FROM table WHERE date BETWEEN '09/10/2015' and '09/23/2015';
我得到这些结果:
1 09/11/2015
2 09/13/2015
3 09/16/2015
4 09/21/2015
5 09/21/2015
6 09/21/2015
7 09/22/2015
8 09/23/2015
但是当我将日期更改为一年前时,它没有再次显示所有这些数据,而是返回了忽略年份的结果:
SELECT id, date FROM table WHERE date BETWEEN '09/15/2014' and '09/23/2015';
结果:
3 09/16/2015
4 09/21/2015
5 09/21/2015
6 09/21/2015
7 09/22/2015
8 09/23/2015
我错过了什么?
编辑:
日期列数据类型:varchar。
最佳答案
看起来你在犯罪。 . .将日期值存储为字符串。这不好。 SQL 具有内置的日期数据类型和丰富的函数。
因此,您需要使用 str_to_date()
转换数据:
SELECT id, date
FROM table
WHERE str_to_date(date, '%m/%d/%Y') BETWEEN '2015-09-10' and '2015-09-23';
MySQL 不知道您打算将某个字符串列作为日期,因此所有比较都是作为字符串完成的。您还应该习惯使用 ISO 标准 YYYY-MM-DD 格式来表示日期。
关于mysql - SELECT BETWEEN 日期不适用于一年 - MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32760403/
我是一名优秀的程序员,十分优秀!