如何编写mysql查询来跟踪今天的记录

时间:2015-11-05 10:26:09

标签: php mysql

我需要按日期跟踪已打开,未打开和已发送的电子邮件。 假设我昨天发了5封电子邮件但昨天没有打开,今天又发了5封电子邮件,所以今天发送的电子邮件总数= 5。今天打开= 3(包括昨天的2和今天的1封电子邮件已打开。尚未打开7这是正确的)。但我需要显示

今天未开封的邮件数量=今天发送的邮件 - 今天已发送的电子邮件已开启

这是我的数据库结构

ID ||| Email ||| Event |||  date**

1 ||| AAA  ||| Sent ||| 04-11-2015

2 ||| BBB  ||| Sent ||| 04-11-2015

3 ||| CCC  ||| Sent |||  04-11-2015

4 ||| DDD  ||| Sent ||| 04-11-2015

5 ||| EEE  ||| Sent||| 04-11-2015

6 ||| FFF  ||| Sent ||| 05-11-2015

7 ||| GGG  ||| Sent ||| 05-11-2015

8 ||| HHH  ||| Sent ||| 05-11-2015

9 ||| III  ||| Sent ||| 05-11-2015

I0 ||| JJJ  ||| Sent ||| 05-11-2015

11 ||| AAA  ||| Open ||| 05-11-2015

12 ||| BBB  ||| Open ||| 05-11-2015

13 ||| FFF  ||| Open ||| 05-11-2015

3 个答案:

答案 0 :(得分:0)

使用MySQL str_to_datecurdate: -

Select Email,
    ((select count(*) from table
    where str_to_date(date,'%d-%m-%Y')=curdate() and Event='Sent')
    -
    (select count(*) from table 
    where str_to_date(date,'%d-%m-%Y')=curdate() and Event='Open')) as unopened 
From table limit 1

答案 1 :(得分:0)

今天我发了这些电子邮件

FFF |||发送||| 2015年5月11日

GGG |||发送||| 2015年5月11日

HHH |||发送||| 2015年5月11日

III |||发送||| 2015年5月11日

JJJ |||发送||| 2015年5月11日

这些电子邮件只打开了1个

FFF |||打开||| 2015年5月11日

未开封的4封电子邮件。

当然这些都是今天开放的,但这些邮件是昨天发送的。

AAA |||打开||| 2015年5月11日

BBB |||打开||| 2015年5月11日

我希望今天未开启=(今天已发送) - (今天已发送)

未开封= 5-1(今天已发送电子邮件已开通)

所以我将获得4分。

答案 2 :(得分:0)

要使用MySQL获取今天的记录,您可以尝试:

SELECT * FROM tbl_name WHERE date > DATE_SUB(NOW(), INTERVAL 1 DAY);