我有一个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次约会),因此只选择一次是一个挑战。
答案 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
将为您提供每月的约会总数。