我想在两个日期之间收到报告而且我不知道什么是最好的方法,我做了一个查询,但有时它不起作用,我不知道错误在哪里。< / 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."' ");
答案 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;,这与时间顺序相反。