假设 Sql 数据库表里有3个项(column): “商品名” “截止日期” “开始日期 ” ;问题: 怎么实现在一个表格(比如GridView)显示出 “商品名” 和 “剩余天数” 这2个项的数据,这里的“剩余天数” 是 “截止日期” 减去“开始日期 ” 得到的!

解决方案 »

  1.   

    select 商品名,剩余天数=截止日期-开始日期 from 表
      

  2.   

    上面是错误:
    select datediff(d,'2009-10-21','2009-10-28') as a
      

  3.   

    select 商品名,datediff(day,开始日期,截止日期) as 剩余天数 from youTable
      

  4.   

    我想让 “剩余天数” 这栏 ,显示效果为“6d 4h 5m”,也就是 “6天4小时5分钟”, how?
      

  5.   

    怎么 让 “剩余天数” 这栏的 数据显示效果为自定义的“6d 4h 5m”,也就是 “6天4小时5分钟”?
      

  6.   

    select '剩余时间:'+
            cast((datediff(mi,'2009-10-28 12:00:00','2009-10-29 12:00:00')/60/24) as varchar(100))+
            '天'+
            cast((datediff(mi,'2009-10-28 12:00:00','2009-10-29 12:00:00')/60)%24 as varchar(100))+
            '小时'+
            cast((datediff(mi,'2009-10-28 12:00:00','2009-10-29 12:00:00'))%60 as varchar(100))+
            '秒'
      

  7.   

    建一个函数:
    ALTER FUNCTION [dbo].[DEF_DAY_HOUR_MINUTE] (@date1 datetime,@date2 datetime)  
    RETURNS  varchar(30)
    AS 
    BEGIN 
    declare @TOTAL_MINUTE int,@DAY_HOUR_MINUTE varchar(30),@MY_DAY int,@MY_HOUR int,@MY_MINUTE int,@TEMP int
    set @TOTAL_MINUTE=datediff(minute ,@date1,@date2)
    if @TOTAL_MINUTE>=1440
    begin
    set @MY_DAY=@TOTAL_MINUTE/1440 --天数
    set @TEMP=@TOTAL_MINUTE % 1440
    if @TEMP>=60
    set @MY_HOUR = @TEMP/60 --小时
    else
    set @MY_HOUR = 0

    set @MY_MINUTE=@TEMP % 60  --分钟
    set @DAY_HOUR_MINUTE=rtrim(convert(varchar(10),@MY_DAY))+'天 '+rtrim(convert(varchar(10),@MY_HOUR))+'小时 '+rtrim(convert(varchar(10),@MY_MINUTE))+'分钟'
    end
    else
    begin
    set @DAY_HOUR_MINUTE='小于一天'
    end 
    return @DAY_HOUR_MINUTE
    END执行:
    select 商品名,dbo.DEF_DAY_HOUR_MINUTE(开始日期,截止日期) as 剩余天数 from youTable 注:函数中小于一天的没写,楼主可参照大于一天的写法补上!!