首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

跪求SQL统计考勤方法,该怎么解决

2012-04-25 
跪求SQL统计考勤方法我想通过上下班时间统计出某人每月上班迟到的次数,9点开始上班,starttime,endtime都为

跪求SQL统计考勤方法
我想通过上下班时间统计出某人每月上班迟到的次数,9点开始上班,starttime,endtime都为datetime类型,例如
  name starttime endtime  
  lily 2009-1-1 9:00:00 2009-1-1 9:10:00


请问该如何实现?哪位大侠若知道方法,麻烦告诉一下,不甚感激。

[解决办法]
题目没看的不是很明白..那个starttime,endtime都是什么日期啊, 上下班日期???
[解决办法]
那员工的实际上班时间总得有个字段吧
[解决办法]

SQL code
select   name,  sum(case when datepart(hh,endtime)>9 then 1 else 0 end) as 迟到次数from   tbgroup by  name
[解决办法]
这样??
SQL code
-- =============================================-- Author:      T.O.P-- Create date: 2009/11/26-- Version:     SQL SERVER 2005-- =============================================declare @TB table([name] varchar(4),[starttime] datetime,[endtime] datetime,[wtime] datetime)insert @TBselect 'lily','2009-1-1 9:00:00','2009-1-1 9:10:00','2009-1-1 9:02:00' union allselect 'lily','2009-1-1 9:00:00','2009-1-1 9:10:00','2009-1-1 9:02:00' union allselect 'lily','2009-1-1 9:00:00','2009-1-1 9:10:00','2009-1-1 8:02:00' union allselect 'lily','2009-1-1 9:00:00','2009-1-1 9:10:00','2009-1-1 8:02:00' union allselect 'lily','2009-1-1 9:00:00','2009-1-1 9:10:00','2009-1-1 8:02:00' union allselect 'lily','2009-1-1 9:00:00','2009-1-1 9:10:00','2009-1-1 9:02:00'select count(*) as 迟到次数from @TBwhere wtime between starttime and [endtime]--测试结果:/*迟到次数-----------3(1 row(s) affected)*/
[解决办法]
select count(*) from 表名 where starttime between (上班时间,下班时间) or endtime between (上班时间,下班时间)
[解决办法]
SELECT DATETIME(HOUR,STARTTME,ENDTIME) 取时差,
SELECT DATEDIFF(MINUTE,GETDATE(),'2009-11-26 12:00') 取分差。
像是你要加入条件来判断午休时间。
这就是我的建议,
[解决办法]
SQL code
楼主最好把考勤表的结构和测试数据写出来,这样才能更好更快的解决问题!O(∩_∩)O哈哈~
[解决办法]
如果是统计是否迟到,写一个函数,取上班时间,用CONVERT(NVARCHAR(12),GETDATE(),120)取到当前日期。假如这个函数叫GETSTANDARDTIME()。

可以用SELECT * FROM TABLE WHERE DATEDIFF(MINUTE,GETSTANDRDTIME(),STARTTIME)<0 这个就是迟到的,当然,你也可以用前台程序来处理标准上班时间。


上一条回复的函数也是DATEDIFF,我写错了,抱歉
[解决办法]
其实 不必要这样头痛医头脚痛医脚的
你写一个考勤数据分析的程序 分析出每人每日的考勤信息
如果 你需要统计一段时间内的某样考勤信息时 你只需要汇总统计一下日报表的数据
这样处理能提供比较灵活的报表处理形式 而且你不必要在每次统计的时候又去分析原始数据
当领导需要某一样功能时 你只需要在日考勤报表中增加这个分析统计功能就可以了
这样既方便又灵活 我建议你这样做

热点排行