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/2015
和 09/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="'")
我有一个带有日期列的 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/2015
和 09/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="'")