MySQL 带有 DATE_FORMAT 的 where 子句

MySQL where clause with DATE_FORMAT

我有一个带有日期列的 MySQL table。

我正在尝试 select 某些特定日期范围之间的所有行,

select * from myTable mt 
    where DATE_FORMAT(mt.DateCol, '%y-%m-%b') between '01/03/2015' and '09/03/2015'

其中 01/03/201509/03/2015 是从和到日期范围 select 用户编辑的 dd/mm/yyyy 格式,我的日期列是 yyyy-mm-dd格式。那么如何使用 DATE_FORMAT 函数直接 select 行。上面的查询给出零结果。

为什么要为此将日期转换为字符串?只是做:

select *
from myTable mt
where mt.DateCol between '2015-03-01' and '2015-03-09';

如果您愿意,可以在常量周围添加 date() 以强调它们的类型:

select *
from myTable mt
where mt.DateCol between date('2015-03-01') and date('2015-03-09');
date_from="2021/10/28"
date_to="2021/10/31"
query = "select * from myTable mt where mt.date between str_to_date({a}{b}{c}, '%Y/%m/%d') AND str_to_date({d}{e}{f}, '%Y/%m/%d')".format(a="'",b=date_from,c="'",d="'",e=date_to,f="'")