使用date_format选择MySQL的日期范围

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类型是日期格式,如2010-01-01 00:00:00

当我运行查询时,结果显示了该天和该月的数据,但也显示了其他年份的数据。

例如:01-01-2011等。


比较DATE时间的日期更好,与您尝试的方式相比。 - hjpotter92
2个回答

12

你应该使用STR_TO_DATE,因为你想将字符串转换回日期

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')
FYI:DATE_FORMAT()将日期转换为格式化的字符串表示形式。
     STR_TO_DATE()将格式化的字符串转换回日期

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')

这是我找到的最佳答案,非常快速。 - Faizan Anwer Ali Rupani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接