月份,上个月和上个月

时间:2017-10-04 14:45:34

标签: php mysql date

我有一个post_meta数据库,其中包含以下字段: meta_id,post_id,meta_key,meta_value

我在PhpMyAdmin中创建了一个视图,仅隔离具有特定文本的记录,以显示客户列表和约会时间。每条记录都是唯一的,因此对于具有多个约会的客户,它们将具有相同的名称,但具有不同的时间和ID。名称和时间包含在meta_value列中。 Column view

以下是一个例子:

postID | appt_date  |   firstname    | lastname
-----------------------------------------------
2106   | 1427698800 |   Sam          | Snead
2107   | 1428649200 |   John         | Miller
2108   | 1428476400 |   Sam          | Snead

我的挑战是提取当月,上个月(例如9月)和上个月(例如8月)的约会数量,以及该月份的唯一客户总数。我将对此进行图形化,以便结果是具有8月客户端(列)和8月约会(行)的卡的行图和线图,9月的SIM卡.MTD将是上个月以及当月到目前为止的任何新客户和约会

我没有太多运气,因为日期是Unix格式和今天的月份(当然这取决于当月的日期)。此外,客户多次出现(其中一些已经有50次约会),因此只选择一次是一个挑战。

3 个答案:

答案 0 :(得分:0)

您可以使用某个日期()(在php端)获取本月和上个月:

$this_month = date("Y-m-d");
$last_day_this_month = date("Y-m-t", strtotime($this_month));
$first_day_this_month = date("Y-m-01", strtotime($this_month));
$next_month = date("Y-m-01", strtotime($last_day_this_month." + 5 days"));
$last_month = date("Y-m-01", strtotime($first_day_this_month." - 5 days"));

在unix时间只需在unix时间使用日期,你就会得到格式化的时间。

其余的只是在SQL部分中进行一些计数或分组。

答案 1 :(得分:0)

首先,你似乎想要这个:

您想要客户A在9月份的约会总数,8月份相同。我做对了吗?

在这种情况下,您需要确定在查询中查看的正确日期/时间,您可以通过使用诸如(https://www.unixtimestamp.com/index.php)之类的纪元转换器来实现此目的

当你找到正确的时代时,你可以使用你所在的时期,即:

where appt_date  < (highest epoch last day of month with time 00:00) and 
appt_date  > (last day of previous month time 00:00)

隔离了您想要的月份的第一天和最后一天之间的时间。

针对您的第二个问题:以及本月的唯一客户总数。我建议你看一下如何使用distinct或group by函数。

答案 2 :(得分:0)

您可以使用FROM_UNIXTIME()函数将unix时间戳转换为日期,然后使用MONTH()函数获取月份编号。像这样:

SELECT COUNT(*) as number_of_appointments, MONTH(FROM_UNIXTIME(appt_date)) as number_month 
    FROM {your_view} 
    GROUP BY number_month 

将为您提供每月的约会总数。