表Promotion的字段和值如下:
id   startTime
1    2012-08-20 15:23:10
2    2012-08-15 09:12:10
3    2012-08-11 22:30:00
我想在显示时间时,距离此刻如果大于等于一天的就显示天数,如果不足一天的就显示小时和分钟数,比如这个例查出的结果就显示为:
9天
4天
10小时
这个语句怎么写?

解决方案 »

  1.   

    SELECT 
    CASE WHEN DATEDIFF(hh,GETDATE(),startTime)>24 THEN DATEDIFF(dd,GETDATE(),startTime)
    WHEN DATEDIFF(n,GETDATE(),startTime)>60 THEN DATEDIFF(hh,GETDATE(),startTime)
    WHEN DATEDIFF(s,GETDATE(),startTime)>60 THEN DATEDIFF(n,GETDATE(),startTime)
    END AS [显示时间]
    FROM Promotion
      

  2.   

    SELECT 
    CASE WHEN DATEDIFF(hh,GETDATE(),startTime)>24 THEN RTRIM(DATEDIFF(dd,GETDATE(),startTime))+'天'
    WHEN DATEDIFF(n,GETDATE(),startTime)>60 THEN RTRIM(DATEDIFF(hh,GETDATE(),startTime))+'小时'
    WHEN DATEDIFF(s,GETDATE(),startTime)>60 THEN RTRIM(DATEDIFF(n,GETDATE(),startTime))+'分钟'
    END AS [显示时间]
    FROM Promotion少了单位
      

  3.   

    --以秒为单位计算方法,如:24小时差1秒时,显示24小时,非则显示天数
    SELECT 
    CASE WHEN DATEDIFF(s,GETDATE(),startTime)>=86400 THEN RTRIM(DATEDIFF(dd,GETDATE(),startTime))+'天'
    WHEN DATEDIFF(s,GETDATE(),startTime)>=3600 THEN RTRIM(DATEDIFF(hh,GETDATE(),startTime))+'小时'
    WHEN DATEDIFF(s,GETDATE(),startTime)>=60 THEN RTRIM(DATEDIFF(n,GETDATE(),startTime))+'分钟'
    END AS [显示时间]
    FROM Promotion
    楼主按自己情况更改