我写了一个查询,计算客户的PPPOE休息时间。在这种情况下它完美地工作 - 在输出文件中,我可以看到客户的名字以及他的PPPOE连接被丢弃的次数:
select
username,
count(username) as db,
DATE_FORMAT(acctstarttime, '%Y-%m-%d')
from radius_db.radacct
where DATE_FORMAT(acctstarttime, '%Y-%m-%d') = '2018-01-02'
group by username
order by db desc;
我试图让它自动化,所以我修改了WHERE
语句,但在这种情况下,在输出中我只看到PPPOE只被删除一次而其他人没有被删除的客户。
select
username,
count(username) as db,
DATE_FORMAT(acctstarttime, '%Y-%m-%d')
from radius_db.radacct
where DATE_FORMAT(acctstarttime, '%Y-%m-%d') = date_format(curdate(),'%Y-%m-%d')
group by username
order by db desc into outfile '/var/lib/mysql-files/pppoe-"
, DATE_FORMAT( NOW(), '%Y%m%d%m%s')
, ".txt'";
答案 0 :(得分:0)
假设您的acctstarttime列是datetime列,您可以按date()和curdate()过滤
select
username,
count(username) as db,
DATE_FORMAT(acctstarttime, '%Y-%m-%d')
from radius_db.radacct
where DATE(acctstarttime) =curdate()
group by username
order by db desc into outfile '/var/lib/mysql-files/pppoe-"
, DATE_FORMAT( NOW(), '%Y%m%d%m%s')
, ".txt'";
并且要小心..因为DATE_FORMAT(acctstarttime,'%Y-%m-%d')='2018-01-02'的意思是2018年1月2日而不是2018年2月1日作为curdate()