在sql server里獲取時間本周,上周,本月,上月


本代碼在存儲過程中使用

一。周時間獲取

首先聲明變量

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(WEEK, DATEDIFF(WEEK, 0, CONVERT(DATETIME, GETDATE(), 120) - 1), 0),121)--本周開始時間
    SELECT @ThisWeekEndTime= CONVERT(nvarchar(10), DATEADD(DAY, 6, DATEADD(WEEK, DATEDIFF(WEEK, 0, CONVERT(DATETIME, GETDATE(), 120) - 1), 0)),121)--本周結束時間

    SELECT @LastWeekStartTime= CONVERT(nvarchar(10),DATEADD(DAY, -7, DATEADD(WEEK, DATEDIFF(WEEK, 0, CONVERT(DATETIME, GETDATE(), 120) - 1), 0)),121)--上周開始時間
    SELECT @LastWeekEndTime= CONVERT(nvarchar(10), DATEADD(DAY, -1, DATEADD(WEEK, DATEDIFF(WEEK, 0, CONVERT(DATETIME, GETDATE(), 120) - 1), 0)),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函數用於返回日期/時間的單獨部分,比如年、月、日、小時、分鍾等等。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM