[英]PHP MySQL Get data between dates
我有一个简单的代码,我无法正常工作。 我正在尝试获取选定日期之间的所有数据,但是它不起作用。 这是我的代码:
形成
<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,我猜这里是错误的。 插入日期的格式为mdY。
我应该怎么做才能使代码正常工作? 先感谢您。
由于您说数据库中的日期格式为mdY
,因此可以简单地将$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
WHERE STR_TO_DATE(acc_date, '%Y/%m/%d') BETWEEN '".$from."' AND '".$to."'
mysql中的日期是Ymd,您正在将dmY与BETWEEN进行比较。还要确保$ from是<而不是$ to。
我最近从事类似的工作。
我使用了小于和大于运算符,所以
... WHERE startDate > $date AND endDate < $date
还要确保数据库中的日期字段实际上是正确的date
类型字段。 确保插入日期时格式正确(即date
类型可能是yyyy-mm-dd
。)否则,数据库将无法正确读取日期。
另外,您可以通过将周围的引号更改为单引号(整个查询的引号)来消除查询中的串联
BETWEEN '".$from."' AND '".$to."'");
可以变成
BETWEEN $from AND $to');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.