MySQL数据库时间字段按年月日显示并多字段去重查询
应用服务长久运行,难免要导出一些统计报表。
现在有一个日志表,记录了各种日志,需要导出十月份的登录日志,要求时间按日期显示,且每天用户登陆要去重。
先看日志表的字段构成:
logType等于2的是登陆日志,时间显示到时分秒,根据需要,这个SQL很简单,大体分两部步:
1、时间用LEFT(Str,length)函数,截取时间只保留年月日;
2、用GROUP BY对dt、userName分组;
按照这个思路,SQL如下:
SELECT LEFT(s.dt,10) 登陆时间, s.username 登陆用户,s.ip 登陆IP ,s.action 验证方式,s.log 登陆状态
FROM systemlog s
WHERE dt<='2019-10-31 23:59:59' and dt>='2019-10-01 00:00:00'
and logType=2
GROUP BY LEFT(s.dt,10), s.username
查询的数据如下
可以看到已完成分组并去重,然后用工具导出查询结果即可。