我正在尝试修改时间为datetime类型的my_table

select DATE_FORMAT(modifiedtime,'%d-%m-%Y') from my_table
where DATE_FORMAT(modifiedtime,'%d-%m-%Y') between '05-11-2013' and '28-11-2013';


该查询也给了我一些其他记录,这些记录也不在上述日期之间,例如,结果集中有一个记录,记录的日期为'04-01-2014'

select DATE_FORMAT(modifiedtime,'%d-%m-%Y') from my_table
    where DATE_FORMAT(modifiedtime,'%d-%m-%Y')='05-11-2013'


此查询工作正常,并提供给定日期的所有记录

why the first behaves like that?
How can i correct it?
what is the efficient way to implement it?


这样我只能在给定的两个日期之间获取所有记录。

最佳答案

SELECT
    DATE_FORMAT(modifiedtime, '%d-%m-%Y')
FROM
    my_table
WHERE
    modifiedtime BETWEEN STR_TO_DATE('05-11-2013', '%d-%m-%Y') AND STR_TO_DATE('28-11-2013', '%d-%m-%Y');

关于mysql - mysql之间的DATE_FORMAT()给了我bug,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22324128/

10-09 16:13