select datediff(week,'2008/01/01','2008/02/01')
成都創(chuàng)新互聯(lián)專注于濱湖企業(yè)網(wǎng)站建設,響應式網(wǎng)站開發(fā),購物商城網(wǎng)站建設。濱湖網(wǎng)站建設公司,為濱湖等地區(qū)提供建站服務。全流程按需定制網(wǎng)站,專業(yè)設計,全程項目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務
試試看,兩個日期間的星期數(shù),默認是周日到周六算一周的
不曉得你說的分組是什麼意思
下面的語句取當前日期所在的星期的星期一的日期
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 =
--如果終止日期與起始日期在同一個星期內,只需要計算有幾天即可
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
--如果終止日期與起始日期在不同的星期內
--首先計算出除前后兩個星期外完整的星期數(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 )
就三個字段(內容,創(chuàng)建日期,標志)
插入數(shù)據(jù)時標志初始為0,代表未提醒
定時掃描該表,
假設創(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 --月
如過有符合條件的就提醒,然后把標志重置一下,比如1代表已經(jīng)日提醒過,2代表日周都提醒過,3代表全提醒過,如果用戶未反饋就依然把標志設為0,下次掃描時接著提醒
指定一個起始日,計算到該日的天數(shù),/7 得到經(jīng)過的周數(shù)。然後按這個周數(shù)分組。