如何从2日起获得月数和天数的所有月份?

时间:2016-09-09 17:15:49

标签: php mysql

我有两张桌子:

a)客户

clients_id    conn_date
=======================
1             2016-06-01     
2             2016-07-17
3             2016-06-22
4             2016-09-03

b)clients_pay_bill

cpp_id     clients_id    paid_month
===================================
1          1             2016-07-03 
2          2             2016-07-22
3          4             2016-09-09             
4          2             2016-07-22

现在,我想显示所有月份 s ,其中包含直到当前日期才支付客户的天数和月数。

例如:

clients_id = 1连接日期(conn_date) 2016-06-01 ,他直到现在才支付 2016-07-03 月帐单。所以sql查询将在几个月后输出:

2016-06
2016-08
2016-09
**2016-07 will not print because he already paid this months bill**

我还希望显示天数和月数,例如:某些天的3个月......

我无法想象sql查询应该如何?

1 个答案:

答案 0 :(得分:-1)

通过执行

获取客户端的conn_datepaid_month
SELECT conn_date FROM clients WHERE client_id = <your_client_id>

并且

SELECT paid_month FROM clients_pay_bill WHERE clients_id = <your_client_id>

然后你可以用PHP来获取从conn_date到current_date的所有日期的数组。

然后foreach日期检查pay_month数组中是否存在。如果不是,则显示。

这是伪代码

$start    = (new DateTime(conn_date));
$end      = date(Y-m-d);
$interval = DateInterval::createFromDateString('1 month');
$period   = new DatePeriod($start, $interval, $end);

foreach ($period as $dt) {
    if(!in_array($dt,$paidMonthArray)) {
         display($dt(Y-m));
    }
}