假设我有这样一张表:我想,在进行查询的时候,根据testTime的值进行
截取时间,然后判断 小时 如果为18 就进行转换 成2013-04-25 18:00最后查询出来的结果如下所示
Id  testTime
1   2013-04-25 18:00
2   2013-04-26 08:22请问sql语句该怎么写?MsSql

解决方案 »

  1.   

    使用DATEPART函数获取HOUR的数据然后判断。
    DATEPART(hh, GETDATE()); 
      

  2.   


    试试select [id],testTime=(
      case when datepart(hh,testTime)=18 
      then convert(char(13),testTime,120)+':00' 
      else convert(char(16),testTime,120) end
    ) from tb
      

  3.   


    我想进一步实现,当testTime 的 hh <= 8 然后就进一步判断 分是否 <=30
    如果是 就返回   2013-04-26 08:30总体实现 
    Id  testTime
    1   2013-04-25 18:00
    2   2013-04-26 08:30这样的效果!select [id],testTime=(
      case 
    when datepart(hh,testTime) = 18 
    then convert(char(13),testTime,120)+':00' 
    when datepart(hh,testTime) <= 8
    then 
    case datepart(MI,testTime) <= 30
    then then convert(char(13),testTime,120)+':30'
    end
    else convert(char(16),testTime,120)
      end

    from test 我这样写,报错 但又不知道错在那
      

  4.   


    我想进一步实现,当testTime 的 hh <= 8 然后就进一步判断 分是否 <=30
    如果是 就返回   2013-04-26 08:30总体实现 
    Id  testTime
    1   2013-04-25 18:00
    2   2013-04-26 08:30这样的效果!select [id],testTime=(
      case 
    when datepart(hh,testTime) = 18 
    then convert(char(13),testTime,120)+':00' 
    when datepart(hh,testTime) <= 8
    then 
    case 
                                    when datepart(MI,testTime) <= 30
    then convert(char(13),testTime,120)+':30'
    end
    else convert(char(16),testTime,120)
      end

    from test 我这样写, 但又不知道错在那解决了……呵呵
      

  5.   


    我想进一步实现,当testTime 的 hh <= 8 然后就进一步判断 分是否 <=30
    如果是 就返回   2013-04-26 08:30总体实现 
    Id  testTime
    1   2013-04-25 18:00
    2   2013-04-26 08:30这样的效果!select [id],testTime=(
      case 
    when datepart(hh,testTime) = 18 
    then convert(char(13),testTime,120)+':00' 
    when datepart(hh,testTime) <= 8
    then 
    case 
                                    when datepart(MI,testTime) <= 30
    then convert(char(13),testTime,120)+':30'
    end
    else convert(char(16),testTime,120)
      end

    from test 我这样写, 但又不知道错在那解决了……呵呵
    自己多写几次就知道了