现在有个很急的问题,如何写SQL可以获取非周末的时间,要获得09年全年的时间如何写,比如现在是9月,得到如下数据
......
2009-9-1
2009-9-2
2009-9-3
2009-9-4
2009-9-7
2009-9-8
2009-9-9
2009-9-10
2009-9-11
.....谢谢拉,急用。

解决方案 »

  1.   

    select 时间字段
    from tb 
    where DATEPART(WEEK,时间字段)=7 or DATEPART(WEEK,时间字段)=1
      

  2.   

    老大的if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_WorkDay]') and xtype in (N'FN', N'IF', N'TF'))
    drop function [dbo].[f_WorkDay]
    GO--计算两个日期相差的工作天数
    CREATE FUNCTION f_WorkDay(
    @dt_begin datetime,  --计算的开始日期
    @dt_end  datetime    --计算的结束日期
    )RETURNS int
    AS
    BEGIN
    DECLARE @workday int,@i int,@bz bit,@dt datetime
    IF @dt_begin>@dt_end
    SELECT @bz=1,@dt=@dt_begin,@dt_begin=@dt_end,@dt_end=@dt
    ELSE
    SET @bz=0
    SELECT @i=DATEDIFF(Day,@dt_begin,@dt_end)+1,
    @workday=@i/7*5,
    @dt_begin=DATEADD(Day,@i/7*7,@dt_begin)
    WHILE @dt_begin<=@dt_end
    BEGIN
    SELECT @workday=CASE 
    WHEN (@@DATEFIRST+DATEPART(Weekday,@dt_begin)-1)%7 BETWEEN 1 AND 5
    THEN @workday+1 ELSE @workday END,
    @dt_begin=@dt_begin+1
    END
    RETURN(CASE WHEN @bz=1 THEN -@workday ELSE @workday END)
    END
    GO
      

  3.   

    select 时间字段
    from tb 
    where DATEPART(WEEK,时间字段)<>7 or DATEPART(WEEK,时间字段)<>1
    修改
      

  4.   

    select 时间字段
    from tb 
    where DATEPART(WEEKDAY,时间字段)<>7 or DATEPART(WEEKDAY,时间字段)<>1
    再修改 晕死 
      

  5.   


    SELECT DATEADD(DAY,NUMBER,'2009-1-1'),DATENAME(DW,DATEADD(DAY,NUMBER,'2009-1-1')) 
    FROM MASTER..SPT_VALUES WHERE TYPE='P'
    AND YEAR(DATEADD(DAY,NUMBER,'2009-1-1'))=2009
    AND DATEPART(DW,DATEADD(DAY,NUMBER,'2009-1-1')) >1
    AND DATEPART(DW,DATEADD(DAY,NUMBER,'2009-1-1')) <7
    不帖结果了,乱
      

  6.   

    --沟沟的
    create   function   fn_test(@begin   datetime,@end   datetime) 
    returns   int 
    As 
    BEGIN 
    declare   @i   int,@j   int 
    set   @i=0 
    set   @j=0 
    if   @end> @begin 
      begin 
                  while   dateadd(d,@i,@begin) <=@end 
                            begin 
                                        if   datepart(weekday,dateadd(d,@i,@begin))   not   in(1,7) 
                                                  set   @j=@j+1 
                                        set   @i=@i+1 
                              end 
        end 
      
    return   @j END