![](/img/trans.png)
[英]Laravel - PHP/MySQL date range filter against date range in database
[英]Date range report in PHP using MySQL Database
我正在嘗試實現與此問題鏈接相似的功能。 我需要使用日期范圍內數據庫中的多個變量來生成PHP報告。
這是我到目前為止的內容:
這是我的JavaScript:
<script type="text/javascript">
$(function(){
$("#date_range").submit(function(){
$.ajax({
type:"POST",
url:".weekly_concession.php?" + new Date().getTime(),
dataType:"text",
data:$(this).serialize(),
beforeSend:function(){
$("#loading").show();
},
success:function(response){
$("#report_result").append(response);
$("#loading").hide();
}
})
return false;
});
});
</script>
我的數據范圍表格
<div align="center">
<form name="date_range" id="date_range" method="post" style="width: 454px" >
<fieldset>
<legend>Start Date : </legend>
<input type="text" value="" placeholder="YYYY-MM-DD" name="start" id="datepicker"/>
<legend>End Date : </legend>
<input type="text" value="" placeholder="YYYY-MM-DD" name="end" id="datepicker2"/>
<button class="btn btn-inverse" type="submit" name="click" >
<i class="icon icon-print icon-white"></i>
Run Report</button>
</fieldset>
</form></div>
<br><br>
我的結果表
<div align="center">
<table id="date_range" width="100%" cellspacing="0" cellpadding="10">
<tr>
<td align="center"><table width="300" cellpadding="4" cellspacing="0" class="product_box">
<tr>
<td align="center" bgcolor="#EAF0FF" class="column-light"> </td>
<td align="center" bgcolor="#EAF0FF" class="column-light"><strong> Sales: </strong></td>
<td align="center" bgcolor="#EAF0FF" class="column-light"><strong>Sale Price Total:</strong></td>
<td align="center" bgcolor="#EAF0FF" class="column-light"><strong>Cost Price Total:</strong></td>
<td align="center" bgcolor="#EAF0FF" class="column-light"><strong>Margin:</strong></td>
</tr>
<tr>
<td align="center" class="column-light"><img src="images/spacer.png" width="140" height="1" /></td>
<td align="center" class="column-light"><img src="images/spacer.png" width="110" height="1" /></td>
<td align="center" class="column-light"><img src="images/spacer.png" width="110" height="1" /></td>
<td align="center" class="column-light"><img src="images/spacer.png" width="110" height="1" /></td>
<td align="center" class="column-light"><img src="images/spacer.png" width="110" height="1" /></td>
</tr>
<tr>
<td align="center" bgcolor="#F5F5F5" class="column-light"><strong>Bawtry</strong></td>
<td align="center" bgcolor="#F5F5F5" class="column-light"><strong>
許多SELECT語句之一:
$sql="SELECT * FROM shop_orders WHERE
shop_order_day AND shop_order_month AND shop_order_year BETWEEN 'start' and 'end' AND shop_order_action = 'Sale' AND shop_order_location = 'Bawtry' AND shop_order_field_to_update LIKE '%con%' ORDER BY shop_order_id DESC ";
$result=mysql_query($sql);
$bawtry_sales = mysql_num_rows($result);
echo $bawtry_sales ?>
</strong></td>
<td align="center" bgcolor="#F5F5F5" class="column-light"><?php
...
我在執行此工作時遇到問題,因此我可以使用以上表格(即2014-03-09-2014-03-16)中選擇的日期在shop_order_day,shop_order_month和shop_order_year之間選擇查詢結果。
所以我的問題是,我需要更改什么以使SELECT語句正確或Javascript功能正常?
任何幫助都將是非常有用的-對不起,如果有點麻煩。
您將需要此查詢。
SELECT *
FROM shop_orders
WHERE DATE(CONCAT(shop_order_year,'-',shop_order_month,'-',shop_order_day))
BETWEEN 'start' and 'end'
AND /* the other stuff in your query */
但是您應該知道,這在搜索方面效率很低。 您最好使用DATE
類型的shop_order_date
列,上面帶有一個索引以及以下查詢模式:
SELECT *
FROM shop_orders
WHERE shop_order_date BETWEEN 'start' and 'end'
AND /* the other stuff in your query */
從您的SQL語句的外觀來看,我想說的問題是您要使用的SQL關鍵字和表結構的組合。 不要考慮使用單獨的日期,月份和年份列,而應考慮使用單個datetime列類型。 這樣,您將能夠使用對日期和時間值進行操作的標准SQL函數。
也。 最好將BETWEEN用於數字數據類型。 因此,您可以將日期轉換為時間戳記...但是為什么使事情復雜化?
將$ start和$ end設置為ISO標准日期-YYYY-MM-DD。 然后:
SELECT * FROM shop_orders WHERE shop_order_date> ='$ start'AND shop_order_date <='$ end'AND ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.