2016-03-04 89 views
0

我有一个简单的代码,我不能去上班之间的数据。我试图获取所选日期之间的所有数据,但它不起作用。这里是我的代码:PHP MySQL的获取日期

形式

<form action="selectedInvoices.php" method="POST"> 
    <div class="row"> 
    <div class="large-4 columns"> 
     <label>From 
     <input type="text" class="datepicker" name="from" /> 
     </label> 
    </div> 
    <div class="large-4 columns"> 
     <label>To 
     <input type="text" class="datepicker" name="to" /> 
     </label> 
    </div> 
    <div class="large-4 columns"> 
     <button class="button" type="submit">Show Invoice</button> 
    </div> 
    </div> 
    </form> 

selectedInvoices.php

$fromOrig = strtotime($_POST['from']); 
$toOrig = strtotime($_POST['to']); 

$from = date('Y-m-d', $fromOrig); 
$to = date('Y-m-d', $toOrig); 

$sql = mysql_query("SELECT * FROM allinvoices WHERE acc_date BETWEEN '".$from."' AND '".$to."'"); 
while($r = mysql_fetch_assoc($sql)) { 
$drno = $r['drno']; 
$name = $r['name']; 
$amount = $r['amountdue']; 

acc_date字段的数据类型为varchar我的猜测是错在这里。我插入日期的格式是m-d-Y。

我应该怎么做,以使代码工作?先谢谢你。

enter image description here

+1

“我的acc_date字段的数据类型是varchar,我猜这里是错误的。”那么这是错误的那里。那么如何比较日期? – rahul

+0

@Plum有没有一种方法可以保留数据类型并在代码中进行转换? – FewFlyBy

+0

WHERE'STR_TO_DATE(acc_date,'Y-m-D')'将格式更改为所需内容。 – Mihai

回答

1
WHERE STR_TO_DATE(acc_date, '%Y/%m/%d') BETWEEN '".$from."' AND '".$to."' 

Fiddle

日期在MySQL中是Y-M-d,你用d-M-Y用于比较BETWEEN.Also确保$从为<超过$来。

+0

与我的代码上面,我应该只是改变我的查询与您的代码? – FewFlyBy

+0

@FewFlyBy如果这不起作用vardump $和$ to,并用结果编辑你的问题。 – Mihai

+0

嘿顺便说一句,我的数据库中的日期是Y/m/d – FewFlyBy

1

既然你说在数据库中的日期格式为m-d-Y,你可以简单地改变你的$to$from以适当的格式。

更换

$from = date('Y-m-d', $fromOrig); 
$to = date('Y-m-d', $toOrig); 

随着

$from = date('m-d-Y', $fromOrig); 
$to = date('m-d-Y', $toOrig); 

并为您查询,您可以更换BETWEEN

acc_date >= $from && acc_date <= $to 
+0

我仍然得到空数据 – FewFlyBy

1

我最近在弄类似的东西。

我比使用比运营商少多了,所以

... WHERE startDate > $date AND endDate < $date 

还要确保在DB你的日期字段实际上是正确的date类型字段。确保当你插入一个日期,它的格式正确(即date类型可以是yyyy-mm-dd)。否则,DB将无法正确读取。

而只是一个侧面说明,您可以通过周围的引号更改为单(围绕整个查询引号)废除串联在查询

BETWEEN '".$from."' AND '".$to."'"); 

可以成为

BETWEEN $from AND $to'); 
+0

感谢您的努力! – FewFlyBy