我用的是DELPHI+SQLSERVE2000现在有一个问题.....我们用的考勤机里面有一个记录打卡的考勤表:   格式如下:
姓名  recdate 打卡日期(打卡机的表是字符型的)  rectime  时间(打卡机的表是字符型的) 
甲 2007-3-19                       12:03
甲 2007-3-19                       13:55
甲 2007-3-19                       18:16甲 2007-3-20                       07:38
甲 2007-3-20                       12:07
甲 2007-3-20                       14:15
甲 2007-3-20                        18:08
乙 ..
乙...问题一:正常的是一天打四次卡:8点,12点,14:00点,18:00点....  
 
      但考勤机里面没有自动统计,,我想做一个统计(我们是按工时算的).......      这个SQL语句该怎样写呢?在写的过程还要考虑漏打的情况,如果只打了上班或只打了下班就不计工时的,比如上面的表格.在19号.甲早上就没打卡....问题二:这个表的时间都是字符的,怎样进行计算呢??????  比如甲20号...应该是上了:  12:07-07:38=小时.......18:08-14:15=时间  这个语法怎么写呀问题三....表格的打卡日期是字符格式的,如'2007-03-20'  那我要查询整个3月份的应该怎样查呢?希望高手们解答,谢谢!!!!!

解决方案 »

  1.   

    第一个问题,可以分解为两步:1. 首先排除/修正"只打了上班或只打了下班"的记录,方法可使用循环法再将结果注明不参与计算(需增加一个标记栏位);
    2. 针对需要计算的记录,再进行统计考勤工时;第二个问题:可考虑再增加一个栏位,并设置为日期型,让该栏位 =  recdate + rectime,然后以此栏位为主进行计算;第三个问题:
    可直接使用 Select * From TABLENAME Where  recdate like '2007-03%' 即可;
    或如第二个问题一样,先转为日期型字段,再查询就简单多了。以上做法,供你参考。