我想在两个日期之间显示mysql的记录

时间:2016-02-21 07:30:37

标签: php mysql

$result=mysql_query("select * from inward_outward where inward_date between '01-02-2016' and '21-02-2016'");

此查询在1月和2月产生结果,但我的意图是查询应仅返回2月的结果。

查询显示的结果如下enter image description here

result of this query and i highlight the error in red symbol

1 个答案:

答案 0 :(得分:1)

由于日期是varchar(为什么?),您需要在使用任何比较逻辑之前将其转换为日期。

您可以将所有这些日期转换为正确的格式并使用它完成 - 只要将来您以正确的格式输入日期而不是一些愚蠢的varchar反向形式〜这将使长期生活更轻松。

set @sd='21-01-2016';
set @ed='21-02-2016';

select * from `inward_outward` 
where date_format( str_to_date( `inward_date`, '%d-%m-%Y' ), '%Y-%m-%d' )
between 
    date_format( str_to_date( @sd, '%d-%m-%Y' ), '%Y-%m-%d' )
        and 
    date_format( str_to_date( @ed, '%d-%m-%Y' ), '%Y-%m-%d' )