2017-02-26 117 views
1

如何仅显示自最近14天以来未订购的客户记录的一条记录。 我需要从当前日期中扣除最后一个订单日期,并仅显示自14天或更长时间以来没有订购的人员。如何获取最近的记录并将其日期与当前日期进行比较

注意,日期格式分类数据库是这样的:2017年1月25日和数据类型varchr(不能更改),在这里我的代码

records

<?php 
    $q_customer = $conn->query("SELECT * FROM customer_order INNER JOIN customer on customer_order.phone= customer.phone GROUP BY customer_order.phone") or die(mysqli_error()); 
    while($f_customer = $q_customer->fetch_array()){ 
?> 
<tr> 
    <td><?php echo $f_customer['phone']?></td> 
    <td><?php echo $f_customer['first_name']?></td> 
    <td><?php echo $f_customer['last_name']?></td> 
    <td><?php echo $f_customer['order_date']?></td> 
</tr> 

<?php 
    } 
?> 
+1

见http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-似乎对我来说是一个非常简单的SQL查询# – Strawberry

+1

“无法改变它” - 不幸的是 – Strawberry

回答

1
SELECT c.phone, c.first_name, c.last_name, 
MAX(str_to_date(co.order_date, '%m-%d-%Y')) AS order_date 
FROM customer_order co INNER JOIN customer c on co.phone=c.phone 
GROUP BY c.phone, c.first_name, c.last_name 
HAVING MAX(str_to_date(co.order_date, '%m-%d-%Y')) < DATE_SUB(curdate(), INTERVAL 2 WEEK); 
+0

谢谢,这是工作,但没有记录显示,即使我有超过90个记录,其中他们的日期 - 当前日期= 14 –

+0

我相信我的日期格式不匹配。我已将连字符更改为连字符。请使用此更新重试。 – phatfingers

+0

伟大的工作@pfinfingers谢谢你,工作正常 –

1

试试这个:

SELECT * FROM `customer_order` 
INNER JOIN `customer` on `customer_order.phone` = `customer.phone` 
WHERE `order_date` >= DATE_SUB(date_format(`order_date`, '%d/%m/%Y'), INTERVAL 14 DAY) 
GROUP BY `customer_order.phone` 

您可能需要更改

date_format(`order_date`, '%d/%m/%Y') 

,以满足您的需求。例如,您可能需要将其更改为

date_format(`order_date`, '%m/%d/%Y') 
相关问题