select count(1) from tb where (datepart(wk,indate)= 5 or datepart(wk,indate)= 6) and indate between 2008-5-25 and 2008-6-3
这个问题第4个回答:
SQL code
create function f_getFreeDay(@Sdate datetime,@Edate datetime)
returns int
as
begin
declare @t table(id int identity(0,1),i int)
declare @cnt int
insert into @t select 1 from sysobjects
select @cnt=count(*)
from
(select dates=dateadd(dd,id,@Sdate) from @t where dateadd(dd,id,@Sdate)<=@Edate) a
where
datepart(dw,dates) in(1,7)
return @cnt
end
go
select dbo.f_getFreeDay(getdate()-100,getdate())
go
drop function f_getWordDay
go
这个问题第5个回答:
SQL code
[code=SQL]--2008-5-25 -----2008-6-3
select top 300 id=identity(int,0,1) into # from sys.columns,sys.objects
select dy,datepart(weekday,dy) wk
from
(
select dateadd(day,id,'2008-5-23') dy
from #
where dateadd(day,id,'2008-5-23')<='2008-6-3'
) t
where datepart(weekday,dy) in(5,6)
/*
dy wk
----------------------- -----------
2008-05-23 00:00:00.000 6
2008-05-29 00:00:00.000 5
2008-05-30 00:00:00.000 6
*/
declare @b datetime,@e datetime
select top 1000 id=identity(int,0,1) into # from sys.columns,sys.objects
select count(*)
from
(
select dateadd(day,id,@b) dy
from #
where dateadd(day,id,@b)<=@e) t
where datepart(weekday,dy) in(5,6)
declare @s datetime,@e datetime
declare @m1 varchar(100)
set @s='2008-01-01'
set @e='2008-05-01'
create table #(dt datetime)
while @s<=@e
begin
insert into # select @s set @s=dateadd(day,1,@s)
end
select count(*) from # where datepart(weekday,dt) in (6,7)--星期日为1,星期一为2,星期二为3....
drop table #
这个问题第11个回答:
为什么要设置这个?
可以看到你的回复啊
这个问题第12个回答:
你的是2000 改改系统表/
SQL code
select top 300 id=identity(int,0,1) into # from syscolumns,sysobjects
select dy,datepart(weekday,dy) wk
from
(
select dateadd(day,id,'2008-5-23') dy
from #
where dateadd(day,id,'2008-5-23')<='2008-6-3'
) t
where datepart(weekday,dy) in(5,6)