SQL语句  如何算出2013年所有的周六和周日? sql  周末

解决方案 »

  1.   

    USE test
    GODECLARE @DateFirst TINYINT
    SELECT @DateFirst=@@DATEFIRSTSET DATEFIRST 1SELECT 
    Date
    ,DATENAME(weekday,Date) AS Weekday
    FROM (
    SELECT
    DATEADD(dd,number,'20130101') AS Date
    FROM master.dbo.spt_values
    WHERE DATEADD(dd,number,'20130101') BETWEEN '20130101' AND '20131231'
    AND type='P'
    ) AS t
    WHERE DATEPART(weekday,Date) IN(6,7)SET DATEFIRST @DateFirst
    /*
    Date                    Weekday
    ----------------------- --------
    2013-01-05 00:00:00.000 星期六
    2013-01-06 00:00:00.000 星期日
    2013-01-12 00:00:00.000 星期六
    2013-01-13 00:00:00.000 星期日
    2013-01-19 00:00:00.000 星期六
    2013-01-20 00:00:00.000 星期日
    2013-01-26 00:00:00.000 星期六
    2013-01-27 00:00:00.000 星期日
    ...
    2013-12-21 00:00:00.000 星期六
    2013-12-22 00:00:00.000 星期日
    2013-12-28 00:00:00.000 星期六
    2013-12-29 00:00:00.000 星期日
    */
      

  2.   

    declare @sdt date
    set @sdt = '2013-01-01'declare @edt date
    set @edt = DATEADD(year,1,@sdt )
    declare @dt date
    declare @w int
    select @w = datepart(WEEKDAY ,@sdt)
    if @w = 1
    begin
    print convert(varchar(10),@sdt,120) + ' 周日'
    end
    set @w = 7 - @w 
    set @dt = DATEADD(day,@w,@sdt)while @dt < @edt
    begin
    print convert(varchar(10),@dt,120) + '  周六'
    print convert(varchar(10),dateadd(day,1,@dt),120) + '  周日'
    set @dt = DATEADD(day,7,@dt)
    end
      

  3.   


    select * from spt_values
    where type='p'
    -------------------------------
    (所影响的行数为 256 行)
    我这个怎么回事啊?查询结果为 0--255
      

  4.   

    create table SatSun([id] int identity(1,1),[date] datetime,[weekday] char(6))godeclare @datetime datetime,@weekday char(6)set @datetime='2013-1-1'while @datetime<='2013-12-31'beginselect @weekday=datename(weekday,@datetime)if @weekday= '星期六' insert SatSun([date],[weekday]) values(@datetime,@weekday)if @weekday='星期日' insert SatSun([date],[weekday]) values(@datetime,'星期天')select @datetime=dateadd(day,1,@datetime)endgoselect * from satsundrop table satsun
      

  5.   

    declare @t table (fdate  datetime )
    declare @fdate datetime =  '20130101' ;
     while @fdate <= '20131231'
     begin 
     insert into @t(fdate)
     select @fdate
     set @fdate = DATEADD(DAY , 1 , @fdate)
     end 
     select  *  from @t  where  (@@DATEFIRST + datepart(DW , fdate)  -1 )%7 in (0 ,6)