1

我已经写了这段代码,但没有得到正确的记录。

1.

SELECT first_name,date 
from user where date between  '01-05-2012' and '05-05-2012'

2.

SELECT first_name,date from user 
where date >= '01-05-2012' date <= '05-05-2012'

上面的代码有什么问题?什么是写查询?

这是样本数据

first_name  date
Sonu    23-01-2012
Saqib   20-02-2012
Sachin  01-04-2012
Ankit   17-08-2012
Michal  12-13-2011
4

4 回答 4

4

首先使用转换您的日期STR_TO_DATE

SELECT *
FROM table1
WHERE STR_TO_DATE(`date`,'%d-%m-%Y') 
      BETWEEN '2012-05-01' AND '2012-12-05'

这将选择从June 01 2012直到December 05 2012

SQLFiddle 演示

如果你真的想坚持你的格式,

SELECT *
FROM table1
WHERE STR_TO_DATE(`date`,'%d-%m-%Y') 
      BETWEEN STR_TO_DATE('01-05-2012','%d-%m-%Y') AND 
              STR_TO_DATE('05-12-2012','%d-%m-%Y')

SQLFiddle 演示

于 2012-10-05T10:39:35.587 回答
1

您的日期必须以 ISO 格式 (yyyy-mm-dd) 指定:

SELECT first_name,date from user 
where date >= '2012-05-01' and date <= '2012-05-05'
于 2012-10-05T10:30:08.493 回答
0

如果日期/时间格式与支持的格式匹配,MySQL 执行隐式转换以将值转换为DATETIME

如果要将字符串显式转换为 DATETIME,则STR_TO_DATE 函数将是最佳选择

于 2012-10-05T10:30:31.923 回答
0

如果您的日期列的数据类型是日期,DATE_FORMAT(date,'%Y-%m-%d')否则使用

STR_TO_DATE(DATE_FORMAT(date,'%Y-%m-%d'))
于 2012-10-05T10:33:58.770 回答