2016-03-04 57 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