指定一個起始日,計(jì)算到該日的天數(shù),/7 得到經(jīng)過的周數(shù)。然後按這個周數(shù)分組。
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了余江免費(fèi)建站歡迎大家使用!
DATEDIFF(wk,起始日期,結(jié)束日期)
這是SQLServer的函數(shù),計(jì)算周數(shù),而且是以星期天為準(zhǔn)
要注意的是起始日期當(dāng)天并不算在內(nèi)
drop function dbo.f_get_workdays
go
CREATE FUNCTION dbo.f_get_workdays(@bdate DATETIME, @edate DATETIME)
RETURNS INTEGER
AS BEGIN
DECLARE @workdays INTEGER
IF @bdate @edate
RETURN -1
SELECT @workdays =
--如果終止日期與起始日期在同一個星期內(nèi),只需要計(jì)算有幾天即可
CASE WHEN DATEPART(wk, @edate-1)-DATEPART(wk,@bdate) = 0 THEN
CASE WHEN DATEPART(dw, @bdate) 5 THEN 0
WHEN DATEPART(dw, @edate-1) 5 THEN 6 - DATEPART(dw, @bdate)
ELSE DATEPART(dw, @edate-1) - DATEPART(dw, @bdate) + 1 END
--如果終止日期與起始日期在不同的星期內(nèi)
--首先計(jì)算出除前后兩個星期外完整的星期數(shù) * 5
ELSE (DATEDIFF(dd,@bdate,@edate)
- (8-DATEPART(dw, @bdate))
- DATEPART(dw, @edate-1)) / 7 * 5
--再加上第一個星期里的工作日數(shù)
+ CASE WHEN DATEPART(dw, @bdate) 6 THEN 6 - DATEPART(dw, @bdate)
ELSE 0 END
--加上末一個星期里的工作日數(shù)
+ CASE WHEN DATEPART(dw, @edate-1)5 THEN 5 ELSE DATEPART(dw, @edate-1) END
END
RETURN @workdays
END
go
select dbo.f_get_workdays(dateadd(day,-21,getdate()),getdate())
---把getdate()替換成你的日期字段就可以了, between and的2個日期分別是你說的2個年頭年尾的情況
select case when getdate()=cast('2014/1/1' as datetime) then datepart(week,getdate()) else 1 end as 第幾周
--from table_name
where getdate() between (case when datepart(weekday,cast('2014/1/1' as datetime))1 then
cast('2014/1/1' as datetime)-datepart(weekday,cast('2014/1/1' as datetime))+2
end )
and
(case when datepart(weekday,cast('2014/12/31' as datetime))6 then
cast('2014/12/31' as datetime)-datepart(weekday,cast('2014/12/31' as datetime))+1
end )
SQL SERVER查詢時(shí)間是一年中第幾周,使用函數(shù) datepart()。
例:查詢 ‘2017-1-1’是2017年的第幾周,語句如下
select?datepart(wk,'2017-1-1')
datepart函數(shù)說明
一、函數(shù)功能:DATEPART() 函數(shù)用于返回日期/時(shí)間的單獨(dú)部分,比如年、月、日、小時(shí)、分鐘等等。
二、語法:DATEPART(datepart,date)
三、參數(shù)說明:date?參數(shù)是合法的日期表達(dá)式。datepart?參數(shù)可以是下列的值:
四、實(shí)例演示
假設(shè)我們有下面這個 "Orders" 表:
我們使用如下 SELECT 語句:
SELECT?DATEPART(yyyy,OrderDate)?AS?OrderYear,
DATEPART(mm,OrderDate)?AS?OrderMonth,
DATEPART(dd,OrderDate)?AS?OrderDay
FROM?Orders
WHERE?OrderId=1
結(jié)果:
select datediff(week,'2008/01/01','2008/02/01')
試試看,兩個日期間的星期數(shù),默認(rèn)是周日到周六算一周的
不曉得你說的分組是什麼意思
分享題目:sqlserver周數(shù),sqlserver 時(shí)間計(jì)算
URL地址:http://jinyejixie.com/article18/hopogp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、定制網(wǎng)站、自適應(yīng)網(wǎng)站、App設(shè)計(jì)、小程序開發(fā)、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)