日期:2014-05-18  浏览次数:20511 次

请高手帮忙解决这个问题。
题目是:(SQL)   Write   a   SQL   query   to   find   first   Week   Day   of   month.

这道题没给表,我怎么查询?

------解决方案--------------------



declare @ta table( date varchar(10))
declare @startdate datetime
set @startdate= '2007-01-01 '
while @startdate!> '2007-12-01 '
begin
insert @ta values(@startdate)
set @startdate=dateadd(month,1,@startdate)
end

declare @number int
set @number=7--星期日
select DATEADD(Day,7-(DATEPART(Weekday,a.date)+@@DATEFIRST-2)%7-1,a.date) as '每个月份的第一个星期日 '
from @ta a


每个月份的第一个星期日
------------------------------------------------------
2007-01-07 00:00:00.000
2007-02-04 00:00:00.000
2007-03-04 00:00:00.000
2007-04-01 00:00:00.000
2007-05-06 00:00:00.000
2007-06-03 00:00:00.000
2007-07-01 00:00:00.000
2007-08-05 00:00:00.000
2007-09-02 00:00:00.000
2007-10-07 00:00:00.000
2007-11-04 00:00:00.000
2007-12-02 00:00:00.000

(所影响的行数为 12 行)


------解决方案--------------------
给你个思路吧,我用的SYBASE,不过也是T-SQL
Weekday的意思是非周六日的天,也就是平日的意思
在函数datepart(dw,s_day)的运用上,要注意你的系统是将哪天设置为一周的第一天,一般情况下是周日为第一天

select top 1000 getdate() as s_day,rowid=identity(5)
into #t1
from sysobjects

update #t1 set
s_day=dateadd(dd,rowid*(-1),s_day)

select convert(varchar(10),min(s_day),111)
from #t1
where datepart(dw,s_day) not in (1,7)
group by datepart(mm,s_day)