2015-03-25 79 views
-1

我有一个MySQL表与日期列。MySQL条款与DATE_FORMAT

我想选择所有的一些特定的日期范围内的行,

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距离,并通过用户这是dd/mm/yyyy格式选择日期范围和我datecolumn是yyyy-mm-dd格式。那么如何使用DATE_FORMAT函数直接选择行。上面的查询给出了零结果。

+0

为什么你会想到一个日期的'YYYY-MM-dd'格式的比较用'mm/dd/yyyy'格式来表示意义......? – CBroe 2015-03-25 01:10:13

回答

1

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

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'); 
+0

日期值'01/03/2015'和'09/03/2015'通过表单提交以'dd/mm/yyyy'格式显示。但我猜测MySQL只会采用'yyyy-mm-dd'格式进行比较。 – mpsbhat 2015-03-25 04:08:25

+0

我自己试图在没有格式化代码中的日期的情况下进行查询。 – mpsbhat 2015-03-25 04:09:25

+1

@mpsbhat。 。 。然后使用'str_to_date()'将字符串参数转换为日期。 – 2015-03-26 02:32:10