CREATE TABLE reminders` (
id int(11) NOT NULL AUTO_INCREMENT,
url varchar(250) DEFAULT NULL,
type int(11) DEFAULT NULL,
actiondate datetime DEFAULT NULL,
PRIMARY KEY (id), UNIQUE KEY id_UNIQUE (id) ) ENGINE=InnoDB AUTO_INCREMENT=186 DEFAULT CHARSET=latin1;
我有一个mysql表,列出了我团队的所有任务。每行都有一个时间戳列。我想计算过去日期的任务数量
actiondate包含以下格式的值:
2017-12-06 00:00:00
2017-12-06 00:00:00
2017-03-06 00:00:00
2017-12-06 00:00:00
2017-06-04 00:00:00
这是包含我想要检查今天日期的数据的列
use =< CURDATE()
以及在一个查询中具有未来日期的任务数。
use > CURDATE()
做一些研究似乎mysql的CASE函数可能能够帮助我,但到目前为止还没有设法使它与预期的结果一起工作。
感谢您的帮助。
答案 0 :(得分:1)
立即尝试:
select
curdate() as 'Current date',
sum(if(actiondate <= curdate(), 1, 0)) as tasks_before,
sum(if(actiondate > curdate(), 1, 0)) as tasks_after
from
reminders;
结果是:
Current date tasks_before tasks_after
------------------- ------------ -----------
31.01.2017 00:00:00 6 4
我在这里设置了一个rextester示例:http://rextester.com/WXNU86748
答案 1 :(得分:0)
您可以使用大小写,但是对于更简单的查询,您可以使用布尔表达式为过去的行生成1 / true,并为将来的行生成0 / false,然后按该值进行分组:< / p>
select (`use` =< current_date()) as in_future,
count(*)
from your_table
group by in_future