sql server  按年月日分组

-----------------------------------------------
--author:yangjinwang
--date:2017-03-30
--do:根据活动查询 每个奖品类的发放数量
-----------------------------------------------
create proc GetWinningInfoTypeCountByTimeActivity
@CreateTimeStart datetime =null,  --开始时间
@CreateTimeEnd datetime =null,  --结束时间
@TimeType varchar(20)='m',   --查询维度,年月日
@ActivityId int=null         --活动ID
as
beginif(@TimeType='y')beginselect  c.id as '活动ID',c.Name  as '活动名称',cast(datepart(YEAR,a.CreateTime) as varchar(4))   as  '日期',b.Title as  '奖品类别',COUNT(a.Id) as '中奖数量'from  WinningInfo  a left join PrizesInfo b on a.PrizesId=b.Idleft join ActivityInfo  c on b.ActivityId=c.Idwhere  a.ActivityId=@ActivityIdand (a.CreateTime>=@CreateTimeStart or @CreateTimeStart is null)and (a.CreateTime<=@CreateTimeEnd or @CreateTimeEnd is null)group by c.id,c.Name  ,  cast(datepart(YEAR,a.CreateTime) as varchar(4)) ,b.Titleorder by 日期endelse if(@TimeType='m')beginselect  c.id as '活动ID',c.Name  as '活动名称',cast(datepart(YEAR,a.CreateTime) as varchar(4))+'-'+RIGHT('00'+CAST(MONTH(a.CreateTime) AS VARCHAR(2)),2)     as  '日期',b.Title as  '奖品类别',COUNT(a.Id) as '中奖数量'from  WinningInfo  a left join PrizesInfo b on a.PrizesId=b.Idleft join ActivityInfo  c on b.ActivityId=c.Idwhere  a.ActivityId=@ActivityIdand (a.CreateTime>=@CreateTimeStart or @CreateTimeStart is null)and (a.CreateTime<=@CreateTimeEnd or @CreateTimeEnd is null)group by c.id,c.Name  ,  cast(datepart(YEAR,a.CreateTime) as varchar(4))+'-'+RIGHT('00'+CAST(MONTH(a.CreateTime) AS VARCHAR(2)),2)  ,b.Titleorder by 日期    endelsebeginselect  c.id as '活动ID',c.Name  as '活动名称',cast(datepart(YEAR,a.CreateTime) as varchar(4))+'-'+RIGHT('00'+CAST(MONTH(a.CreateTime) AS VARCHAR(2)),2)+'-'+RIGHT('00'+CAST(day(a.CreateTime) AS VARCHAR(2)),2)     as  '日期',b.Title as  '奖品类别',COUNT(a.Id) as '中奖数量'from  WinningInfo  a left join PrizesInfo b on a.PrizesId=b.Idleft join ActivityInfo  c on b.ActivityId=c.Idwhere  a.ActivityId=@ActivityIdand (a.CreateTime>=@CreateTimeStart or @CreateTimeStart is null)and (a.CreateTime<=@CreateTimeEnd or @CreateTimeEnd is null)group by c.id,c.Name  ,  cast(datepart(YEAR,a.CreateTime) as varchar(4))+'-'+RIGHT('00'+CAST(MONTH(a.CreateTime) AS VARCHAR(2)),2)+'-'+RIGHT('00'+CAST(day(a.CreateTime) AS VARCHAR(2)),2)   ,b.Titleorder by 日期    end
end

年,月,日,季,旬

--还可以这样
--年
select datepart(YEAR,getdate())
select datepart(yyyy,getdate())
select datepart(yy,getdate())
--月
select datepart(MONTH,getdate())
select datepart(mm,getdate())
select datepart(m,getdate())
--日
select datepart(dd,getdate())
--1年中的第多少天
select datepart(dy,getdate())
--季度
select datepart(qq,getdate())select datepart(qq,'2017-07-01')
--1年中的第多少周
select datepart(wk,getdate())
--星期 --因为从周日算第一天的,星期4,计算结果是5
select datepart(dw,getdate())-1SELECT CONVERT(VARCHAR(10),GETDATE(),120)  --2015-07-13
SELECT CONVERT(VARCHAR(10),GETDATE(),101)  --07/13/2015--按日分组:
select convert(nvarchar(10),GETDATE(),120)
--按年月分组:
select  cast(datepart(YEAR,GETDATE()) as varchar(4))+'-'+RIGHT('00'+CAST(MONTH(GETDATE()) AS VARCHAR(2)),2)
--按年分组
select DATEPART(year,GETDATE())--按旬分组select case (datepart(day,GETDATE())-1)/10 when 0 then '上旬' when 1 then '中旬' else '下旬' end as 旬,sum(1) as 统计 from 表A group by case (datepart(day,dt)-1)/10 when 0 then '上旬' when 1 then '中旬' else '下旬' end ------------------------------------------------------------------------------------

另一种Convert 年月日分组方式

--按日
select convert(nvarchar(10),GETDATE(),120)
--按月
select convert(nvarchar(7),GETDATE(),120)
--按年
select convert(nvarchar(4),GETDATE(),120)

转载于:https://www.cnblogs.com/yangjinwang/p/6648408.html

sql server 按年月日分组相关推荐

  1. SQL Server 2008 R2——分组取前几名

    版权声明:本文为博主原创文章 未经许可不得转载   请通过右侧公告中的"联系邮箱(wlsandwho@foxmail.com)"联系我 未经作者授权勿用于学术性引用. 未经作者授权 ...

  2. SQL server 数据库单列分组查询

    use EMIS go select student_id,max(score) 最高分,min(score) 最低分,count(score) 成绩记录条数 from t_course_reg gr ...

  3. sql月度分组_SQL Server按月分组

    SQL Server按月分组 我有一个具有此架构的表 ItemID UserID Year IsPaid PaymentDate Amount 1 1 2009 0 2009-11-01 300 2 ...

  4. SQL Server 数据库原理与应用

    1. 数据库概述 名词解释: DB:数据库 DBMS:数据库管理系统 DBS:数据库系统 DBA:数据库管理员 DBAS:数据库应用系统 数据管理的三个阶段:人工管理.文件系统阶段.数据库系统阶段. ...

  5. SQL Server Group by

    Group by语句,是SQL Server的一个分组语句.什么意思呢?分组的意思就是将一个数据集根 据指定的字段来进行区域的划分,然后划分后可以进行数据的处理. 文字说多也不好理解,直接上代码,一看 ...

  6. 深度对比Oracle与SQL Server

    本译文采用知识共享署名-非商业性使用-相同方式共享 3.0 Unported许可协议发布,转载请保留此信息 译者:马齿苋 | 链接:http://www.dbabeta.com/2010/oracle ...

  7. Sql Server 中利用游标对table 的数据进行分组统计式输出…

    Sql Server 中利用游标对table 的数据进行分组统计式输出- Table Name: Tb_Color Create table Tb_Color(id int identity(1,1) ...

  8. Lambda表达式 Linq SQL Server 分组后获取第一条数据或最小(最大)数据

    1.Lambda表达式 以下是从网上粘贴下来  经测试失败 提示方法"First"只能用作最终查询操作.请考虑在这个实例中使用方法"FirstOrDefault" ...

  9. SQL Server 数据分组

    目录 Group By 语句 Group By 子句与聚合函数 Having 子句 Group By语句 Group By 从字面意义上理解就是根据"By"指定的规则对数据进行分组 ...

  10. SQL Server数据分组

    SQL Server数据分组 一.SQL Server Group By语句. Group By语句从英文的字面意义上理解就是"根据(by)一定的规则进行分组(Group)".它的 ...

最新文章

  1. 《女性的选择》--[日]今野由梨
  2. mxGraph改变图形大小重置overlay位置
  3. 路由器 jffs分区 简介
  4. linux 安装ios jenkins 打包机器签名证书问题
  5. 19年8月 字母哥 第六章 生命周期内的拦截过滤与监听 用热点公司网不行
  6. 红旗linux mysql_恢复 - 红旗Linux案例精选:Amanda集中备份实例详细讲解_数据库技术_Linux公社-Linux系统门户网站...
  7. C# FTP 上传、下载、获取文件列表
  8. php怎么写for循环,PHP for循环的写法和示例
  9. Spring Security Oauth2 (三) 密码码模式
  10. 在职研究生-学术硕士和专业硕士有什么区别?
  11. 能上QQ但不能打开网页——解决办法
  12. WEB打印控件Lodop(V6.x)使用说明及样例
  13. Excel对多个sheet页进行相同操作
  14. CoBOT检测出AI开源框架TensorFlow中的缺陷
  15. java图形化界面编程之Swing
  16. Hadoop安装及部署
  17. 16 Python总结之舆情时间序列可视化
  18. 深度学习常用的数据集,包括各种数据跟图像数据。
  19. 想要转行产品经理,可是社招都要有产品经理相关经验的,该如何转行呢?
  20. 计算机网络系统有哪些核心技术,超级计算机的核心技术是什么

热门文章

  1. 一个文科小白的数据分析师之路
  2. 图解欧洲足球五大联赛 | R爬虫可视化第五季
  3. 使用本机IP调试web项目
  4. Nios内部RAM固化配置
  5. Java中按值传递与按引用传递的区别
  6. 分布式系统的数据一致性问题
  7. (二)文档请求不同源之window.postMessage跨域
  8. D3D学习摘记(I)上
  9. 一篇极好的 CSS 教程 (ZZ)
  10. iOS URL Scheme 劫持-在未越狱的 iPhone 6上盗取支付宝和微信支付的帐号密码