两个日期查询之间的mysql日期字符串不起作用

时间:2015-08-02 19:50:52

标签: php mysql date

我想在两个日期之间收到报告而且我不知道什么是最好的方法,我做了一个查询,但有时它不起作用,我不知道错误在哪里。< / p>

再次感谢你。

我在mysql字段类型varchar中保存日期时间与php日期(&#39; h:iA d-m-Y&#39;)。

mysql行日期中的示例:

09:22AM 26-06-2015
08:00AM 27-06-2015
10:00PM 28-06-2015

当我使用这个数据示例$ since = 01-06-2015 $ until = 30-06-2015时,这可行

但如果我使用这个数据$ since = 01-06-2015 $ until = 01-07-2015这不起作用。

    $since = $_REQUEST['since'];
    $until = $_REQUEST['until'];

    mysql_query("select * from paradas where DATE_FORMAT(STR_TO_DATE(SUBSTR(date, 9),'%d-%m-%Y') , '%d-%m-%Y')  between '".$since."'  and '".$until."' ");

1 个答案:

答案 0 :(得分:1)

将日期和时间存储为VARCHAR,而不是DATETIME,您还可以更改日期时间比较(按时间顺序)到字符串比较(lexigrafical)的两行之间的比较。

如果您现在(如您的示例中)选择了字符串表示,其中lexigrafical比较提供的结果与按时间顺序比较不同,则您不能再使用BETWEEN之类的结构或<=之类的运算符朋友。

解决方案:如果您想存储日期和时间信息,请使用DATETIME列类型。

除此之外,让我引导您this SO question讨论您的SQL查询。

修改

为了说清楚:

以词汇顺序&#39; 01-06-2015&#39; &LT; &#39; 20-06-2015&#39; &LT; &#39; 30-06-2015&#39;,这与时间顺序相同

但是在一个lexigraphical命令&#39; 01-06-2015&#39; &LT; &#39; 2015年1月7日&#39; &LT; &#39; 20-06-2015&#39;,这与时间顺序相反。