报表中常用到的日期计算方式(个人小结),陆续更新

--------------------------------------------

--标题:报表中常用到的日期计算方式

--作者:htl258(Tony)

--日期:-09-21 02:30

--转载请保留此信息

--------------------------------------------

DECLARE @dt DATETIME

SET @dt='2009-09-20'

--1.1 求本月的第天:

SELECT DATEADD(mm,DATEDIFF(mm,0,@dt),0) --2009-09-01 00:00:00.000

--1.2 求本月的最后天:

SELECT DATEADD(mm,DATEDIFF(mm,0,@dt)+1,0)-1 --2009-09-30 00:00:00.000

--2.1.1 求本周的第一天(周日为第一天):两种方法

SELECT DATEADD(wk,DATEDIFF(wk,0,@dt),0)-1 --2009-09-20 00:00:00.000

SELECT @dt+1-DATEPART(w,@dt+@@datefirst) --2009-09-20 00:00:00.000

--2.1.2 求本周的第一天(周一为第一天):

SELECT @dt+1-DATEPART(w,@dt+@@datefirst-1) --2009-09-14 00:00:00.000

--2.2 求本周的最后一天(在本周第一天的基础上加)

--2.3.1 求本周的第一个工作日(周日为第一天):两种方法

SELECT DATEADD(wk,DATEDIFF(wk,0,@dt),0) --2009-09-21 00:00:00.000

SELECT @dt+2-DATEPART(w,@dt+@@datefirst) --2009-09-21 00:00:00.000

--2.3.2 求本周的第一个工作日(周一为第一天):

SELECT @dt+1-DATEPART(w,@dt+@@datefirst-1) --2009-09-14 00:00:00.000

--2.4 求本周的最后一个工作日(在第一个工作日的基础上加)

--2.5 求本月的第一个星期一:

SELECT DATEADD(wk,DATEDIFF(wk,0,DATEADD(dd,6-DATEPART(dd,@dt),@dt)),0)

--2009-09-07 00:00:00.000

--3.1 求本年的第一天:

SELECT DATEADD(yy,DATEDIFF(yy,0,@dt),0) --2009-01-01 00:00:00.000

--3.2 求本年的最后一天:

SELECT DATEADD(yy,DATEDIFF(yy,0,@dt)+1,0)-1 --2009-12-31 00:00:00.000

--4.1 求本季度的第一天:

SELECT DATEADD(qq,DATEDIFF(qq,0,@dt),0) --2009-07-01 00:00:00.000

--4.2 求本季度的最后一天:

SELECT DATEADD(qq,DATEDIFF(qq,0,@dt)+1,0)-1 --2009-09-30 00:00:00.000

--5.1 求半年度的第一天:

SELECT DATEADD(mm,DATEDIFF(mm,0,DATEADD(mm,-(MONTH(@dt)-1)%6,@dt)),0)

--2009-07-01 00:00:00.000

--5.2 求半年度的最后一天:

SELECT DATEADD(mm,DATEDIFF(mm,0,DATEADD(mm,-(MONTH(@dt)-1)%6+6,@dt)),0)-1

--2009-12-31 00:00:00.000

你可能感兴趣的:(工作,qq)