declare @weekday varchar(1) select @weekday=DATEPART(dw,getdate())if @weekday=7 --星期六 or @weekday=1 --星期一
错了declare @weekday varchar(1) select @weekday=DATEPART(dw,getdate())if @weekday=7 --星期六 or @weekday=1 --星期日
用函数DATEPART(WK,PAYDATE) 可看HELP清楚DATEPART函数的应用.
select datepart(weekday,getdate())
由于 @@datefirst 可通过 set datefirst N 设定 导致 datepart(weekday,[date]) 不确定! so:select * from T where (@@datefirst + datepart(weekday,paydate)) % 7 in (0,1)OR:select * from T where (@@datefirst + datepart(weekday,paydate)) % 7 + case when (@@datefirst + datepart(weekday,paydate)) % 7 < 2 then 6 else -1 end in (6,7)
用 datename 又有语言问题!
--与 datefirst 无关! 语言无关! create function Weekday(@Date datetime) returns integer begin --1: Monday , ... ,7: Sunday return (select (@@datefirst + datepart(weekday,@Date)) % 7 + case when (@@datefirst + datepart(weekday,@Date)) % 7 < 2 then 6 else -1 end) end
select @weekday=DATEPART(dw,getdate())if @weekday=7 --星期六
or @weekday=1 --星期一
select @weekday=DATEPART(dw,getdate())if @weekday=7 --星期六
or @weekday=1 --星期日
可看HELP清楚DATEPART函数的应用.
so:select *
from T
where
(@@datefirst + datepart(weekday,paydate)) % 7 in (0,1)OR:select *
from T
where
(@@datefirst + datepart(weekday,paydate)) % 7
+ case when (@@datefirst + datepart(weekday,paydate)) % 7 < 2
then 6
else -1
end in (6,7)
create function Weekday(@Date datetime)
returns integer
begin
--1: Monday , ... ,7: Sunday
return (select (@@datefirst + datepart(weekday,@Date)) % 7
+ case when (@@datefirst + datepart(weekday,@Date)) % 7 < 2
then 6
else -1
end)
end
其中:缺省周六是7,周日是1,星期一是2,一直下去。
--其中:缺省周六是7,周日是1,星期一是2,一直下去。那么就 if datepart(weekday,@paydate)=7
print '周六'
if datepart(weekday,@paydate)=1
print '周日'再要不然,就SET DATEFIRST 先强制一下一周的开始是几.然后再判断