使用date_format选择日期范围MySQL

use*_*399 8 mysql date date-format

我在使用MySQL选择日期范围时遇到了问题.

SELECT MvtDate,date_format(MvtDate,'%d-%m-%Y')
  FROM (`immmvt`)
 WHERE date_format(MvtDate,'%d-%m-%Y') BETWEEN '01-01-2010' AND '02-01-2010'
Run Code Online (Sandbox Code Playgroud)

mvtDate类型是日期2010-01-01 00:00:00.

当我运行查询时,结果适用于日期和月份,但它也显示了其他年份的其他结果.

喜欢01-01-2011

Joh*_*Woo 12

你应该使用,STR_TO_DATE因为你想转换stringdate

SELECT MvtDate, date_format(MvtDate,'%d-%m-%Y')
FROM  `immmvt`
WHERE MvtDate BETWEEN STR_TO_DATE('01-01-2010','%d-%m-%Y') AND 
                      STR_TO_DATE('02-01-2010','%d-%m-%Y')
Run Code Online (Sandbox Code Playgroud)
FYI: DATE_FORMAT() converts date to formatted string representation.
     STR_TO_DATE() converts formatted string back to date