平台是ASP.NET(C#),我在做考勤,想设定一个标准时间,然后让当前时间减去标准时间得到值.这个时间只用考虑小时和分钟,不用年月日.
现在有两个问题:
1,本来我在文本框里设定的值只有小时和分钟,但我一旦将值赋成DATETIME类型,自动会添加年月日(没有就变成当前时间),但在我这里不需要,不知道有没有好的办法.此处处理好下面的问题也不是问题了.如果这里没办法,我可以让数据库里是完整字段,显示则通过ToShortTimeString变成我想要的形式.
2,但如果按我上面最后的方法做.在考勤上会有个问题,即默认时间会有设置当天的日期,本来相减我只想要相差几小时几分钟的,但这样做就会有额外的天数.这方面我不是很懂,不知道大家怎么做类似这种考勤的,最好能给点完整例子.

解决方案 »

  1.   

    试试用sql函数来做in_time  right((convert(varchar,getdate(),20)),10)
      

  2.   

    TimeSpan d=new TimeSpan();
    d=date1-date2;
      

  3.   

    参考:用convert (varchar(10),当前时间,108)从包括日期的时间中得到只包括小时、分钟和秒的时间。select *from 表名 where convert (varchar(10),A字段时间,108)>convert (varchar(10),当前时间,108)
      

  4.   

    考勤的时间应该是动态获得的,你只要不把数据库类型设置成datetime就可以了,用insert语句+sql函数实现
      

  5.   

    回晚了,我上面的话是对这个说的:
    TimeSpan d=new TimeSpan();
    d=date1-date2;
      

  6.   

    现在显示方面没问题了,主要是在当前时间与标准时间相减上由于有年月日而影响了结果.不知道在函数上有没有办法.当然如果我把小时和分钟改成两个INT就没难度了,不过暂时还不想这么做.
    至于改数据库方面,还不太明白.
      

  7.   

    lz,用sql函数:convert (varchar(10),当前时间,108)
    来转换一下不行吗??
      

  8.   

    用如下语句可以,测试通过了的:
    SELECT     id, DATEDIFF(mi, CONVERT(varchar(10), '标准比较时间', 108), CONVERT(varchar(10), 数据库中时间字段, 108)) AS '时间分钟差'
    FROM        表名