SELECT *
FROM tabelA
ORDER BY name, 
CASE
WHEN ATime - CAST(CAST(ATime AS FLOAT) AS INT) < 0.5 THEN 0 --上午
ELSE 1 --下午
END

解决方案 »

  1.   

    --convert(char(2), requestdate,8); 取的是小时
    select orderstatus,convert(char(2), requestdate,8) as fz,count(*),max(requestdate)
    from dbo.BS_BATCH_REQUERY group by orderstatus,convert(char(2), requestdate,8);
      

  2.   

    谢谢各位,我看帮助找到了好的办法,datepart,尝试中,谢谢.过点时间结贴
      

  3.   


    上下午分组:
    group by
    depart(hh,hourfield)-11.5 )+1) /(abs(datepart(hh,hourfield)-11.5 )+1)
      

  4.   

    datepart(hh,hourfield)-11.5 )+1) /(abs(datepart(hh,hourfield)-11.5 )+1)
      

  5.   

    select name,count(*),sum(amount)
    ,case when datepart(hour,ATime) < 12
                      then dateadd(day,datediff(day,0,ATime),0) --上午归到 零点
                else
                     dateadd(hour,12,dateadd(day,datediff(day,0,ATime),0)) --下午归到 十二点
             end
    from tabelA
    group by name,case when datepart(hour,ATime) < 12
                      then dateadd(day,datediff(day,0,ATime),0) --上午归到 零点
                else
                     dateadd(hour,12,dateadd(day,datediff(day,0,ATime),0)) --下午归到 十二点
             endor:group by dbo.udf_HalfDay(ATime)create function udf_HalfDay(@date datetime)
    returns datetime
    as
    begin
    return
    (select case when datepart(hour,@date) < 12
                      then dateadd(day,datediff(day,0,@date),0) --上午归到 零点
                else
                     dateadd(hour,12,dateadd(day,datediff(day,0,@date),0)) --下午归到 十二点
             end)
    end
      

  6.   

    select case when convert(varchar(10),post_time,108)<=convert(varchar(10),'12:00:00',108) then '上午' 
    else '下午' end as 时间
    ,post_time from news没有问题了吧(12点我算的是上午啊)
      

  7.   

    现在来揭帖,大家不要有意见
    ----
    “谢谢各位,我看帮助找到了好的办法,datepart,尝试中,谢谢.过点时间结贴“
    --^_^