Boo*_*Tan 7 php mysql database
我正在为俱乐部写一个客户忠诚度软件,每天上午10点到早上6点开放.数据存储在MYSQL中,我想计算客户当月的总访问量.
我正在使用计数(不同(日期)),但如果玩家是在下午5点来到凌晨3点,并且在晚上10点和凌晨2点进行了2笔交易.它将被计为2次访问,而不是1次.
我有一个包含下列列的事务表:
ps:括号()中的任何内容都不是真实数据.我每天约有2000笔交易.我也能够改变表格结构
Transaction_ID | Date(not Date/Time) | Customer_ID | Item | price | timestamp 1 | 11-06-2015 (6pm) | Jane | drink| 2.00 | 156165166 2 | 09-06-2015 (2pm) | Jane | drink| 2.00 | 1433858493 3 | 10-06-2015 (3am) | Jane | drink| 2.00 | 1433906073 4 | 06-06-2015 (6pm) | Jane | drink| 2.00 | 156165166
当前代码返回{4,Jane}.我正在寻找的答案是{3,Jane}.交易{2,3}应被视为一次访问
SELECT count(distinct(Date)) as visit, Customer_ID
FROM transaction
GROUP BY Customer_ID
WHERE timestamp BETWEEN $timestamp1 AND $timestamp2
Run Code Online (Sandbox Code Playgroud)
$timestamp1 = strtotime("first day of february +10am");
$timestamp2 = strtotime("first day of march +6am");
您如何建议准确计算下面的总访问次数?我能够将表结构从日期更改为日期/时间.
最简单的答案,对我的代码进行最少的更改.
SELECT count(DISTINCT(DATE(DATE_SUB(from_unixtime(timestamp),INTERVAL 6 HOUR))) as visit, Customer_ID FROM transaction GROUP BY Customer_ID WHERE timestamp BETWEEN $timestamp1 AND $timestamp2
最简单的方法是在 SQL 语句中将日期时间 ( date, timestamp?) 字段向后移动 6 小时,然后您将获得一天中从凌晨 4 点到中午 12 点的时间间隔:
DISTINCT(DATE(DATE_SUB(dt,INTERVAL 6 HOUR)))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
131 次 |
| 最近记录: |