我正在努力实现与此问题相似的事情 - link。我需要在日期范围内使用数据库中的多个变量生成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功能正常?
任何帮助都会很棒 - 抱歉,如果这有点令人费解。
答案 0 :(得分:0)
你会想要这个查询。
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 */
但你应该知道这在搜索方面效率极低。使用shop_order_date
类型的DATE
列并使用索引和以下查询模式,您会好得多:
SELECT *
FROM shop_orders
WHERE shop_order_date BETWEEN 'start' and 'end'
AND /* the other stuff in your query */
答案 1 :(得分:0)
根据您的SQL语句的外观,我会说问题是您要使用的SQL关键字和表结构的组合。您不应该为日,月和年使用单独的列,而应考虑使用单个日期时间列类型。这样,您就可以使用对日期和时间值进行操作的标准SQL函数。
另外。 BETWEEN最适用于数字的数据类型。所以,您可以将日期转换为时间戳...但为什么会使事情变得复杂?
将$ start和$ end设置为ISO标准日期 - YYYY-MM-DD。然后:
SELECT * 来自shop_orders 哪里 shop_order_date&gt; =&#39; $ start&#39; AND shop_order_date&lt; =&#39; $ end&#39; 和......