select datediff(week,'2008/01/01','2008/02/01')

成都創(chuàng)新互聯(lián)專注于濱湖企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開發(fā),購(gòu)物商城網(wǎng)站建設(shè)。濱湖網(wǎng)站建設(shè)公司,為濱湖等地區(qū)提供建站服務(wù)。全流程按需定制網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
試試看,兩個(gè)日期間的星期數(shù),默認(rèn)是周日到周六算一周的
不曉得你說(shuō)的分組是什麼意思
下面的語(yǔ)句取當(dāng)前日期所在的星期的星期一的日期
select
dateadd(day,
2-datepart(weekday,getdate()),getdate())
根據(jù)條件替換getdate(),就可以了
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 =
--如果終止日期與起始日期在同一個(gè)星期內(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ì)算出除前后兩個(gè)星期外完整的星期數(shù) * 5
ELSE (DATEDIFF(dd,@bdate,@edate)
- (8-DATEPART(dw, @bdate))
- DATEPART(dw, @edate-1)) / 7 * 5
--再加上第一個(gè)星期里的工作日數(shù)
+ CASE WHEN DATEPART(dw, @bdate) 6 THEN 6 - DATEPART(dw, @bdate)
ELSE 0 END
--加上末一個(gè)星期里的工作日數(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個(gè)日期分別是你說(shuō)的2個(gè)年頭年尾的情況
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 )
就三個(gè)字段(內(nèi)容,創(chuàng)建日期,標(biāo)志)
插入數(shù)據(jù)時(shí)標(biāo)志初始為0,代表未提醒
定時(shí)掃描該表,
假設(shè)創(chuàng)建日期為2011-01-15
datediff(day,'2011-01-15',getdate())=1 --日
datediff(week,'2011-01-15',getdate())=1 --周
datediff(month,'2011-01-15',getdate())=1 --月
如過(guò)有符合條件的就提醒,然后把標(biāo)志重置一下,比如1代表已經(jīng)日提醒過(guò),2代表日周都提醒過(guò),3代表全提醒過(guò),如果用戶未反饋就依然把標(biāo)志設(shè)為0,下次掃描時(shí)接著提醒
指定一個(gè)起始日,計(jì)算到該日的天數(shù),/7 得到經(jīng)過(guò)的周數(shù)。然後按這個(gè)周數(shù)分組。
分享標(biāo)題:sqlserver每周,sql本周
本文來(lái)源:http://chinadenli.net/article16/dsijsgg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、用戶體驗(yàn)、小程序開發(fā)、響應(yīng)式網(wǎng)站、網(wǎng)站維護(hù)、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)