表中的PHP数据,其中todays date位于两个字段的范围内
我有一个名为表中的PHP数据,其中todays date位于两个字段的范围内,php,mysql,Php,Mysql,我有一个名为orders的表,其中包含orderID、StartDate、EndDate,等等 我想知道今天的日期是否在StartDate和EndDate范围内。作为起点,我想打印适用的结果 这是我的代码,我就是不能让它工作。而且,CURDATE()对我不起作用 <?php //$originalDate = "2010-03-21"; //$newDate = date("d-m-Y", strtotime($originalDate)); include "dbh
orders
的表,其中包含orderID
、StartDate
、EndDate
,等等
我想知道今天的日期是否在StartDate
和EndDate
范围内。作为起点,我想打印适用的结果
这是我的代码,我就是不能让它工作。而且,CURDATE()
对我不起作用
<?php
//$originalDate = "2010-03-21";
//$newDate = date("d-m-Y", strtotime($originalDate));
include "dbh.php";
$today = DATE("Y-m-d");
// WHERE $today > StartDate OR $today < EndDate OR $today > SuspendEnd
OR $today < SuspendStart";
//{
// echo $today;
//}
$sql= "SELECT * FROM orders
WHERE $today = StartDate
";
$records = mysqli_query($conn,$sql);
while($row = mysqli_fetch_assoc($records)){
echo "<tr>";
echo "<td>".$row['OrderID']."</td>";
//echo "<td>".$row['StartDate']."</td>";
echo "</tr>";
}
?>
我没有运行mysql来测试这一点,但你可以试试
select orderID from orders where (CURDATE() between StartDate and EndDate)
您只需使用以下SQL查询即可获取当前所有订单:
SELECT
*
FROM
orders
WHERE
CURRENT_DATE() BETWEEN StartDate AND coalesce(EndDate, CURRENT_DATE) ;
它使用MySQL已经有一个函数来表示“今天”(因此,您不需要从PHP传递今天的值)。如果“EndDate”可以为空,并且希望它表示“永不结束”,则使用COALESCE
到今天的日期将使上一个查询工作
随时检查一切
参考资料:
请编辑您的代码。。。事实上,这是没有意义的,就像你把一些文本剪切粘贴到了不合适的地方。为您的orders
表添加CREATE TABLE
语句也会有所帮助。您在代码中使用CURDATE()
?$today
是一个应该被引用的字符串,就像mysql从年月中减去年月一样。尝试SELECT*FROM orders,其中curdate()在datestart和dateend之间
我已经做了一些基本的清理。请你的问题更清楚地解释什么不起作用。理想情况下,您应该提供一个。