求:SQL 语句 如何算去 考勤时间差?(Sql server数据库) ( 积分: 50 )

  • 主题发起人 主题发起人 okgxsh
  • 开始时间 开始时间
O

okgxsh

Unregistered / Unconfirmed
GUEST, unregistred user!
考勤刷卡记录,如何用Sql语句准确计算每个用户的 上班时长(中午有午休,不计入工时)
那位大哥帮忙!

说明:如果有某个用户在进门时刷了2次卡又怎么来处理?希望做过考勤讲讲需要注意的问题。

用户编号 机号 刷卡时间 进出标志
00001 01 2005-12-12 8:29:00 入
00002 01 2005-12-12 8:28:00 入
00003 01 2005-12-12 8:27:00 入

00001 02 2005-12-12 11:30:00 出
00002 02 2005-12-12 11:30:00 出
00003 02 2005-12-12 11:30:00 出

00001 01 2005-12-12 12:29:00 入
00002 01 2005-12-12 12:28:00 入
00003 01 2005-12-12 12:27:00 入

00001 02 2005-12-12 17:30:00 出
00002 02 2005-12-12 17:30:00 出
00003 02 2005-12-12 17:30:00 出
 
考勤刷卡记录,如何用Sql语句准确计算每个用户的 上班时长(中午有午休,不计入工时)
那位大哥帮忙!

说明:如果有某个用户在进门时刷了2次卡又怎么来处理?希望做过考勤讲讲需要注意的问题。

用户编号 机号 刷卡时间 进出标志
00001 01 2005-12-12 8:29:00 入
00002 01 2005-12-12 8:28:00 入
00003 01 2005-12-12 8:27:00 入

00001 02 2005-12-12 11:30:00 出
00002 02 2005-12-12 11:30:00 出
00003 02 2005-12-12 11:30:00 出

00001 01 2005-12-12 12:29:00 入
00002 01 2005-12-12 12:28:00 入
00003 01 2005-12-12 12:27:00 入

00001 02 2005-12-12 17:30:00 出
00002 02 2005-12-12 17:30:00 出
00003 02 2005-12-12 17:30:00 出
 
考勤汇总这不是一个 SQL 语句可以解决问题的。
1。有重复打卡现象。
2。有缺卡现象。
3。实际上班时间是按作息时间,而不是打卡时间。
4。有请假、公出、加班。
5。手工补卡(例如临时停电)。
。。。。。。
要考虑的情况很多,只能编程进行汇总。
 
用SQL如何计算这段时段的用户上班时间共计多长?
 
1、如果要算时间的话。只有减了。。你的休息时间如果是不变的话哪你提取时间减去。
如果休息时间有表格的话,要提取出来。你可以存在一个变量里面。
2、可以加入标志呀。。如果有刷卡记录刚SQL 不执行
如:
IF (SELECT 1 FROM TABLE WHERE RFlag = 1)
你的SQL
 
SQL 语句恐怕是不行吧,存储过程倒是有很多人实现过了,做得很复杂都可以,只是运行有些慢(要用游标实现)
 
如何实现批量计算用户?时间长度?有没有例子阿?
 
用lingsg说的方法省事。完全可以满足你的实现批量计算用户和时间长度的要求
 
来自:lingsg, 时间:2005-12-30 11:37:36, ID:3313655
SQL 语句恐怕是不行吧,存储过程倒是有很多人实现过了,做得很复杂都可以,只是运行有些慢(要用游标实现)
: 说的太过简单了,能详细一点吗?
 
先去除重复卡。在用SQL语句
 
想在网络赚钱上吗?“免费使用,有偿回报”只要联网,就可赚钱,无需任何投入。注

册地址:
http://www.8qu.net/register.asp?net=thor

你也许错过了网络初期的赚钱机会,这次你一定不可以再错过!
看新闻,赚现金!无须点击广告,不必投入1分钱!
点击这里,免费注册http://www.sohoads.com/sabar/reg.asp?sj=thor
 
To: okgxsh
我自己没有搞过,是我以前公司的一个同事做的,存储过程写程序比较费事,
我建议你还是用Delphi来实现要好维护一些
 
后退
顶部