sql 日期分组查询

目的

从数据库查询最近N天的数量进行统计

第一步取当前日期

select GETDATE() 得到 2023-03-31 11:15:32.570

第二步取最近几天日期

这样

select GETDATE()-1

或者这样

select dateadd(day, -5, GETDATE())

这里还有个 datediff…

第三步group by 分组查询

select Crdate from table group by Crdate
加上数量
select Crdate,count() from table group by Crdate
加上排序
select Crdate,count(
) from table group by Crdate order by Crdate desc

第四步接着开始拼

select * from table
select * from table where Crdate>select dateadd(day, -5, GETDATE())
好像要加括号
select * from table where Crdate>(select dateadd(day, -5, GETDATE()))

第五步发现不对劲

select GETDATE() 得到 2023-03-31 11:15:32.570
要的应该是整天吧,这出来 11点前的就不算了,不对头
要去掉时间
select dateadd(day, -5, convert(varchar(10),GETDATE(),102))
得到 2023-03-26 00:00:00.000 这应该可以

第六步group by 得弄一下

SELECT convert(varchar(10),CrDate,102),COUNT(*) from table GROUP BY convert(varchar(10),CrDate,102)

第七步按实际,不需取全库

table 改这样
select crdate from table where crdate>(select dateadd(day, -5, convert(varchar(10),GETDATE(),102)))

第八步拼一起

SELECT convert(varchar(10),CrDate,102),COUNT(*) from select crdate from table where crdate>(select dateadd(day, -5, convert(varchar(10),GETDATE(),102))) GROUP BY convert(varchar(10),CrDate,102)
出错了

第九步想想,查查

得这样改
SELECT convert(varchar(10),a.CrDate,102),COUNT(*) from select crdate from table where crdate>(select dateadd(day, -5, convert(varchar(10),GETDATE(),102))) a GROUP BY convert(varchar(10),a.CrDate,102)

小白不懂,好像还有问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值