8

我在使用 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'

mvtDate类型是 date like 2010-01-01 00:00:00

当我运行查询时,结果适用于几天和几个月,但它也显示了其他年份的其他结果。

之类的01-01-2011

4

2 回答 2

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')
仅供参考: DATE_FORMAT() 将日期转换为格式化的字符串表示形式。
     STR_TO_DATE() 将格式化字符串转换回日期
于 2012-10-16T08:42:58.160 回答
2
SELECT MvtDate,date_format(MvtDate,'%d-%m-%Y')
  FROM (`immmvt`)
 WHERE date_format(MvtDate,'%d-%m-%Y') IN ('01-01-2010', '02-01-2010')
于 2012-10-16T08:46:56.203 回答