本代码在存储过程中使用
一。周时间获取
首先声明变量
DECLARE @ThisWeekStartTime NVARCHAR(100),@ThisWeekEndTime NVARCHAR(100),--本周 @LastWeekStartTime NVARCHAR(100),@LastWeekEndTime NVARCHAR(100),--上周
@ThisMonthStartTime NVARCHAR(100),@ThisMonthEndTime NVARCHAR(100),--本月
@LastMonthSartTime NVARCHAR(100),@LastMonthEndTime NVARCHAR(100)--上月
在进行赋值
SELECT @ThisWeekStartTime= CONVERT(nvarchar(10), DATEADD(wk, DATEDIFF(wk,0,DATEADD(dd, -1, getdate()) ), 0),121)--本周开始时间 SELECT @ThisWeekEndTime= CONVERT(nvarchar(10), DATEADD(wk, DATEDIFF(wk,0,DATEADD(dd, -1, getdate()) ), 7),121)--本周结束时间 SELECT @LastWeekStartTime= CONVERT(nvarchar(10),DATEADD(wk, DATEDIFF(wk,0,DATEADD(dd, -7, getdate()) ), 0),121)--上周开始时间 SELECT @LastWeekEndTime= CONVERT(nvarchar(10), DATEADD(wk, DATEDIFF(wk,0,DATEADD(dd, -7, getdate()) ), 7),121)--上周结束时间
SELECT @ThisMonthStartTime=CONVERT(nvarchar(10),dateadd(dd,-day(getdate())+1,getdate()),121)--本月开始时间
SELECT @ThisMonthEndTime=CONVERT(nvarchar(10),dateadd(dd,-day(getdate())+1,dateadd(m,1,getdate())),121)--本月结束时间
SELECT @LastMonthSartTime=CONVERT(nvarchar(10),dateadd(dd,-day(dateadd(month,-1,getdate()))+1,dateadd(month,-1,getdate())),121)--上月开始时间
SELECT @LastMonthEndTime= CONVERT(nvarchar(10), dateadd(dd,-day(getdate())+1,getdate()),121) --上月结束时间
(注意:结束时间实际上是多加了一天,为了后面在sql中使用的方便)
接下来开始使用
SELECT T.t,COUNT(1)AS c,T.dtime FROM (SELECT *,datepart(dd,RegisterDate) t, (CASE WHEN DATEPART(WEEKDAY,RegisterDate)=2 then 1 WHEN DATEPART(WEEKDAY,RegisterDate)=3 then 2 WHEN DATEPART(WEEKDAY,RegisterDate)=4 then 3 WHEN DATEPART(WEEKDAY,RegisterDate)=5 then 4 WHEN DATEPART(WEEKDAY,RegisterDate)=6 then 5 WHEN DATEPART(WEEKDAY,RegisterDate)=7 then 6 WHEN DATEPART(WEEKDAY,RegisterDate)=1 THEN 7 else 0 END)AS dtime FROM QPAccountsDB..AccountsInfo WHERE RegisterDate>=@ThisWeekStartTime AND RegisterDate<=@ThisWeekEndTime) T GROUP BY T.t,T.dtime ORDER BY T.dtime
上周跟上面使用方法一样
接下来开始介绍月的使用方法
SELECT T.t,COUNT(1)AS c FROM (SELECT *,datepart(dd,RegisterDate) t FROM QPAccountsDB..AccountsInfo WHERE RegisterDate>=@ThisMonthStartTime AND RegisterDate<=@ThisMonthEndTime) T GROUP BY T.t ORDER BY T.t
以上代码都有使用到(datepart)这个函数 datepart函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。