㈠ 一个sql语句的问题
弱弱的问一句,什么数据库?
再一个,你把各个时间点也给一下,譬如早8点算正常上班,这种信息你也该给出来的,顺便给你点提示
这种东西按一对一对来算,譬如上午签到和签退算一对,那么如果签到时间>8点或签退时间<11点则算旷工半天,所以不能考虑除以4的情况
还是先把什么数据库弄出来吧,要不时间函数都不一样,不太好弄,还有最好列举几条数据
---补充---
id,编号 signTime,签到时间 signDate,签到日期 signNum,签到次序 username,签到人 signState,签到状态
create table test (id int,
signTime varchar(8),
signDate varchar(10),
signNum int,
username varchar(20),
signState varchar(4));
insert into test values (1,'08:00:00', '2010-08-07',1,'张三','A');
insert into test values (1,'11:30:00', '2010-08-07',2,'张三','A');
insert into test values (1,'13:00:00', '2010-08-07',3,'张三','A');
insert into test values (1,'17:00:00', '2010-08-07',4,'张三','A');
insert into test values (1,'08:00:00', '2010-08-08',1,'张三','A');
insert into test values (1,'11:30:00', '2010-08-08',2,'张三','A');
insert into test values (1,'13:00:00', '2010-08-08',3,'张三','A');
insert into test values (1,'16:00:00', '2010-08-08',4,'张三','A');
insert into test values (1,'07:00:00', '2010-08-07',1,'李四','A');
insert into test values (1,'10:30:00', '2010-08-07',2,'李四','A');
insert into test values (1,'14:00:00', '2010-08-07',3,'李四','A');
insert into test values (1,'17:00:00', '2010-08-07',4,'李四','A');
insert into test values (1,'08:00:00', '2010-08-08',1,'李四','A');
insert into test values (1,'12:00:00', '2010-08-08',2,'李四','A');
insert into test values (1,'13:00:00', '2010-08-08',3,'李四','A');
insert into test values (1,'17:00:00', '2010-08-08',4,'李四','A');
insert into test values (1,'08:00:00', '2010-08-08',1,'王五','A');
insert into test values (1,'12:00:00', '2010-08-08',2,'王五','A');
insert into test values (1,'13:00:00', '2010-08-08',3,'王五','A');
select username,(morning+afternoon) 出勤天数 from
(select f.username username,sum(case when f.morning_sb=1 and f.morning_xb=1 then 0.5 else 0 end) morning,
sum(case when f.afternoon_sb=1 and f.afternoon_xb=1 then 0.5 else 0 end) afternoon
from
(select a.signDate signDate,a.username username,
case when b.morning_sb =1 then 1 else 0 end morning_sb ,
case when c.morning_xb =1 then 1 else 0 end morning_xb,
case when d.afternoon_sb =1 then 1 else 0 end afternoon_sb,
case when e.afternoon_xb =1 then 1 else 0 end afternoon_xb
from
(select a.signDate signDate,b.username username from
(select distinct signDate signDate from test where signdate between '2010-08-07' and '2010-08-08' ) a,
(select distinct username username from test) b) a
left join
(select signDate,username,case when signTime between '06:00:00' and '08:00:00' then 1 else 0 end morning_sb from test where signNum=1 and signDate between '2010-08-07' and '2010-08-08') b
on a.signDate=b.signDate
and a.username=b.username
left join
(select signDate,username,case when signTime between '11:00:00' and '13:00:00' then 1 else 0 end morning_xb from test where signNum=2 and signDate between '2010-08-07' and '2010-08-08') c
on b.signDate=c.signDate
and b.username=c.username
left join
(select signDate,username,case when signTime between '11:00:00' and '13:00:00' then 1 else 0 end afternoon_sb from test where signNum=3 and signDate between '2010-08-07' and '2010-08-08') d
on b.signDate=d.signDate
and b.username=d.username
left join
(select signDate,username,case when signTime between '17:00:00' and '23:59:59' then 1 else 0 end afternoon_xb from test where signNum=4 and signDate between '2010-08-07' and '2010-08-08') e
on b.signDate=e.signDate
and b.username=e.username) f
group by f.username) g
大概基本所有情况都考虑进去了,不懂的HI我吧,写了很多,加测试大概用了一个小时
我算的是早8点-11点是上班时间,下午13点-17点是上班时间,可能有的地方写的不对,你凑合看吧,估计看起来很累
-------------补充--------------
你都没仔细看我写的这堆吧?
其实都差不多,只要你改其中几个地方就OK了
1,咱俩时间格式不一样,我是2010-08-29,你是2010-8-29,时间我精确到了秒,你精确到了分钟
2,运行过程中,我没考虑最后的状态,因为靠时间点就能来判断是迟到或早退了
㈡ SQL2000数据库问题,现在有两张表,一张员工表和一张每日签到表,能不能建立一个触发器
这个需要建一个存储过程和一个数据库作业和一个返回随机时间段的函数才能实现
如果有A表(员工),sUserCode,B表(签到表),sUserCode,dtSignInDate
-- 返回随机时间段的函数
Create Function RandDateTime(@RandNum Decimal(38,18),@StartTime DateTime,@EndTime DateTime)
Returns DateTime
As
Begin
Declare @HourDiff Decimal(38,18)--两个时间之间的小时差值
Declare @MinutePartDiff Decimal(38,18)--分钟部分的差值
Declare @SecondPartDiff Decimal(38,18)--秒部分的差值
Declare @MsPartDiff Decimal(38,18)--毫秒部分的差值
Declare @SmallDate DateTime
Declare @BigDate DateTime
Declare @ReturnDateTime DateTime
/*取各部分差值*/
Set @MsPartDiff = Abs(Convert(Decimal(38,18),DatePart(ms,@EndTime)-DatePart(ms,@StartTime)))
Set @SecondPartDiff = Abs(Convert(Decimal(38,18),DatePart(s,@EndTime)-DatePart(s,@StartTime)))
Set @MinutePartDiff = Abs(Convert(Decimal(38,18),DatePart(mi,@EndTime)-DatePart(mi,@StartTime)))
Set @HourDiff = DateDiff(hh,@StartTime,@EndTime)
Set @SmallDate = @StartTime
Set @BigDate = @EndTime
If @HourDiff <0
Begin
Set @SmallDate = @EndTime
Set @BigDate = @StartTime
Set @HourDiff = -@HourDiff
End
ActionLable:
Declare @HourDecimal Decimal(38,18)--小时的小数部分
Declare @HourString varchar(200)
Set @HourDiff = @HourDiff * @RandNum
Set @HourString = CONVERT(VARCHAR(200),@HourDiff)
Set @HourString = SubString(@HourString,CharIndex('.',@HourString)+1,Len(@HourString))
Set @HourString = '0.' + @HourString
Set @HourDecimal = Convert(Decimal(38,18),@HourString)
Set @MsPartDiff = (@MsPartDiff + @SecondPartDiff * 1000 + @MinutePartDiff*1000*60 + @HourDecimal * 3600*1000) * @RandNum
Set @ReturnDateTime = DateAdd(hh,@HourDiff,@SmallDate)
Set @ReturnDateTime = DateAdd(ms,@MsPartDiff,@ReturnDateTime)
Return @ReturnDateTime
End
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
-- 自动签到存储过程
Create procere p_AutoSignIn
begin
-- @startdate 打卡开始时间
-- @enddate 打卡结束时间
declare @startDate datetime
declare @enddate datetime
set @startDate=getdate()
set @endDate=dateadd(n,[20],@startDate) 可以换成自己需要的时间差值
-- a表示0-1 之间的随机数值,可用小数
insert into B(sUserCode,dtSignInDate)
select sUserCode,RandDatetime (a,@startdate,@enddate) from A
end
-- 创建计划作业
企业管理器
--管理
--SQL Server代理
--右键作业
--新建作业
--"常规"项中输入作业名称
--"步骤"项
--新建
--"步骤名"中输入步骤名
--"类型"中选择"Transact-SQL 脚本(TSQL)"
--"数据库"选择执行命令的数据库
--"命令"中输入要执行的语句:
update base set flag=0 where datediff(dd,date,getdate())=0
--确定
--"调度"项
--新建调度
--"名称"中输入调度名称
--"调度类型"中选择你的作业执行安排
--如果选择"反复出现"
--点"更改"来设置你的时间安排为一天一次
然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行
设置方法:
我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定.
㈢ SQL考勤的问题,目前考勤只能查到每天签到签退的成员,写什么语句能查到没有签到签退的成员
从全体名单里筛除签到的成员即可。
select * from 全体成员表 where 成员 not in (select 成员 from 签到签退表)
㈣ sql中怎么统计工作日出勤情况
1.你还得有张日期表,规定一年365天哪天是周末,哪天是节假日,也就是日期类型(其实就是日历)
2.出勤表中日期和日期表中的日期连接根据日期类型就知道哪天是节假日哪天是正常上班时间了
3.旷工天数应该就是出勤表中上班签到时间或者下班签到时间为空的话就算旷工了
4.休息日加班天数就是出勤表和日期表连接,日期类型是休息日,并且上班签到和下班签到时间都不为空了
总之,有张日期表什么都能检索出来了
㈤ 考勤软件Att2007 和sql2000 如何实现远程考勤
将这段导入数据,并做好与sql的连孝空接
use kaoqin
--员工考勤记录修改日志
CREATE TABLE CHECKEXACT (
EXACTID INT IDENTITY(1,1) NOT NULL , --修改日绝卖志ID
USERID INT NULL DEFAULT 0, --员工ID号
CHECKTIME DATETIME NULL DEFAULT 0, --签到/巧宏瞎签退时间
CHECKTYPE VARCHAR (2) NULL DEFAULT 0, --原来的签到/签退标志:I-签到,O-签退
ISADD SMALLINT NULL DEFAULT 0, --是否新增的记录
YUYIN VARCHAR (25) NULL , --修改考勤记录的原因
ISMODIFY SMALLINT NULL DEFAULT 0, --是否仅仅是修改原始记录
ISDELETE SMALLINT NULL DEFAULT 0, --是否是删除的记录
INCOUNT SMALLINT NULL DEFAULT 0, --是否恢复
ISCOUNT SMALLINT NULL DEFAULT 0, --
MODIFYBY VARCHAR (20) NULL, --操作员
[DATE] DATETIME NULL, --操作时间
CONSTRAINT EXACTID PRIMARY KEY (EXACTID)
)
;
--签到/签退记录表
CREATE TABLE CHECKINOUT (
USERID INT NOT NULL , --员工ID号
CHECKTIME DATETIME NOT NULL DEFAULT GETDATE(), --签到/签退时间
CHECKTYPE VARCHAR (1) NULL DEFAULT 'I', --签到/签退标志:I-签到,O-签退
VERIFYCODE INT NULL DEFAULT 0, --验证方式:除256的余数表示签到的方式: 0-指纹;1-输号码;2-密码。大于256表示该记录已经被确认,在于处理时不进行处理
SENSORID VARCHAR (5) NULL, --采集数据的考勤终端/设备ID
CONSTRAINT USERCHECKTIME PRIMARY KEY (USERID, CHECKTIME)
)
;
--部门表
CREATE TABLE DEPARTMENTS (
DEPTID INT IDENTITY(1,1) NOT NULL , --部门ID
DEPTNAME VARCHAR (30) NULL , --部门名称
SUPDEPTID INT NOT NULL DEFAULT 1, --上级部门的ID
CONSTRAINT DEPTID PRIMARY KEY (DEPTID)
)
;
CREATE TABLE EXCNOTES (
USERID INT NULL ,
ATTDATE DATETIME NULL ,
NOTES VARCHAR (200) NULL
)
;
--节假日表
CREATE TABLE HOLIDAYS (
HOLIDAYID INT IDENTITY(1,1) NOT NULL ,
HOLIDAYNAME VARCHAR (20) NULL ,
HOLIDAYYEAR SMALLINT NULL ,
HOLIDAYMONTH SMALLINT NULL ,
HOLIDAYDAY SMALLINT NULL DEFAULT 1,
STARTTIME DATETIME NULL ,
DURATION SMALLINT NULL ,
HOLIDAYTYPE SMALLINT NULL ,
XINBIE VARCHAR (4) NULL ,
MINZU VARCHAR (50) NULL,
CONSTRAINT HOLID PRIMARY KEY (HOLIDAYID)
)
;
--班次表
CREATE TABLE NUM_RUN (
NUM_RUNID INT IDENTITY(1,1) NOT NULL , --班次ID号
OLDID INT NULL DEFAULT -1, --
NAME VARCHAR (30) NOT NULL , --班次名称
STARTDATE DATETIME NULL DEFAULT '2000-1-1', --起用日期
ENDDATE DATETIME NULL DEFAULT '2099-12-31', --结束使用日期
CYLE SMALLINT NULL DEFAULT 1, --班次一次循环的周期
UNITS SMALLINT NULL DEFAULT 1, --周期单位
CONSTRAINT NUMID PRIMARY KEY (NUM_RUNID)
)
;
--班次排班时段表
CREATE TABLE NUM_RUN_DEIL (
NUM_RUNID SMALLINT NOT NULL , --班次的ID号
STARTTIME DATETIME NOT NULL , --开始时间
ENDTIME DATETIME NULL , --结束时间
SDAYS SMALLINT NOT NULL , --开始日期
EDAYS SMALLINT NULL , --结束日期
SCHCLASSID INT NULL DEFAULT -1, --时段所属的类别
CONSTRAINT NUMID2 PRIMARY KEY (NUM_RUNID, SDAYS, STARTTIME)
)
;
--管理员权限设置表
CREATE TABLE SECURITYDETAILS (
SECURITYDETAILID INT IDENTITY(1,1) NOT NULL ,
USERID SMALLINT NULL ,
DEPTID SMALLINT NULL ,
SCHEDULE SMALLINT NULL ,
USERINFO SMALLINT NULL ,
ENROLLFINGERS SMALLINT NULL ,
REPORTVIEW SMALLINT NULL ,
REPORT VARCHAR (10) NULL,
CONSTRAINT NAMEID2 PRIMARY KEY (SECURITYDETAILID)
)
;
--轮班表
CREATE TABLE SHIFT (
SHIFTID INT IDENTITY(1,1) NOT NULL , --轮班ID号
NAME VARCHAR (20) NULL , --轮班名称
USHIFTID INT NULL DEFAULT -1, --
STARTDATE DATETIME NOT NULL DEFAULT '1900-1-1', --起用轮班的日期
ENDDATE DATETIME NULL DEFAULT '1900-12-31', --结束时用轮班的日期
RUNNUM SMALLINT NULL DEFAULT 0, --该轮班中所含的班次数 0<x<13
SCH1 INT NULL DEFAULT 0, --轮班的第一个班次
SCH2 INT NULL DEFAULT 0, --轮班的第二个班次
SCH3 INT NULL DEFAULT 0, --轮班的第三个班次
SCH4 INT NULL DEFAULT 0, --轮班的第四个班次
SCH5 INT NULL DEFAULT 0, --轮班的第五个班次
SCH6 INT NULL DEFAULT 0, --轮班的第六个班次
SCH7 INT NULL DEFAULT 0, --轮班的第七个班次
SCH8 INT NULL DEFAULT 0, --轮班的第八个班次
SCH9 INT NULL DEFAULT 0, --轮班的第九个班次
SCH10 INT NULL DEFAULT 0, --轮班的第十个班次
SCH11 INT NULL DEFAULT 0, --轮班的第十一个班次
SCH12 INT NULL DEFAULT 0, --轮班的第十二个班次
CYCLE SMALLINT NULL DEFAULT 0, --轮班周期
UNITS SMALLINT NULL DEFAULT 0 , --周期单位
CONSTRAINT SHIFTS PRIMARY KEY (SHIFTID)
)
;
--员工登记指纹表
CREATE TABLE TEMPLATE (
TEMPLATEID INT IDENTITY(1,1) NOT NULL , --指纹ID号
USERID INT NOT NULL , --员工ID号
FINGERID INT NOT NULL , --手指ID号,0-9分别表示右手拇指、右手食指、……、左手无名指、左手小指等
TEMPLATE image NOT NULL , --指纹模板1
TEMPLATE2 image NULL , --指纹模板2
TEMPLATE3 image NULL , --指纹模板3
BITMAPPICTURE image NULL , --登记的指纹图像1
BITMAPPICTURE2 image NULL , --登记的指纹图像2
BITMAPPICTURE3 image NULL , --登记的指纹图像3
BITMAPPICTURE4 image NULL , --登记的指纹图像4
USETYPE SMALLINT NULL , --指纹模板的用法,Bit0表示仅作备份不比对,Bit1表示指纹比对时使用低识别门限
CONSTRAINT TEMPLATED PRIMARY KEY (TEMPLATEID)
)
;
--员工排班表
CREATE TABLE USER_OF_RUN (
USERID INT NOT NULL , --员工ID号
NUM_OF_RUN_ID INT not NULL , --班次或轮班ID号
STARTDATE DATETIME not NULL DEFAULT '1900-1-1', --起用班次的日期
ENDDATE DATETIME not NULL DEFAULT '2099-12-31', --结束使用该班次的日期
ISNOTOF_RUN INT NULL DEFAULT 0, --是否轮班
ORDER_RUN INT NULL , --轮班的起始班次
CONSTRAINT USER_ST_NUM PRIMARY KEY (USERID, NUM_OF_RUN_ID, STARTDATE, ENDDATE)
)
;
--员工考勤例外(请假/公出)表
CREATE TABLE USER_SPEDAY (
USERID INT NOT NULL , --员工ID号
STARTSPECDAY DATETIME NOT NULL DEFAULT '1900-1-1', --开始日期
ENDSPECDAY DATETIME NULL DEFAULT '2099-12-31', --结束日期
DATEID SMALLINT not NULL DEFAULT -1, --例外类型,999为公出,-1为注释
YUANYING VARCHAR (200) NULL , --例外的原因
[DATE] DATETIME NULL , --登记/输入记录的时间
CONSTRAINT USER_SEP PRIMARY KEY (USERID, STARTSPECDAY, DATEID)
)
;
--员工临时排班表
CREATE TABLE USER_TEMP_SCH (
USERID INT not NULL , --员工ID号
COMETIME DATETIME not NULL , --上班时间
LEAVETIME DATETIME not NULL , --下班时间
OVERTIME INT not NULL DEFAULT 0, --该时段中计算加班的时间
[TYPE] SMALLINT NULL DEFAULT 0, --类型
FLAG SMALLINT NULL DEFAULT 1, --标志
SCHCLASSID INT NULL DEFAULT -1, --该时段所属时段类别ID号,-1表示自动判别
CONSTRAINT USER_TEMP PRIMARY KEY (USERID, COMETIME, LEAVETIME)
)
;
--员工信息表
CREATE TABLE USERINFO (
USERID INT IDENTITY(1,1) NOT NULL , --员工ID号
BADGENUMBER VARCHAR (12) NOT NULL , --考勤号码
SSN VARCHAR (20) NULL , --身份证/证件号
NAME VARCHAR (20) NULL , --姓名
GENDER VARCHAR (2) NULL , --性别
TITLE VARCHAR (20) NULL , --职务
PAGER VARCHAR (20) NULL , --移动电话/传呼机
BIRTHDAY DATETIME NULL , --生日
HIREDDAY DATETIME NULL , --参加工作日期
STREET VARCHAR (40) NULL , --家庭地址
CITY VARCHAR (2) NULL , --市代码
STATE VARCHAR (2) NULL , --省代码
ZIP VARCHAR (12) NULL , --邮编
OPHONE VARCHAR (20) NULL , --办公电话
FPHONE VARCHAR (20) NULL , --家庭电话
VERIFICATIONMETHOD SMALLINT NULL , --验证方式
DEFAULTDEPTID SMALLINT NULL DEFAULT 1, --所属部门ID号
SECURITYFLAGS SMALLINT NULL , --管理员标志
ATT SMALLINT NOT NULL DEFAULT 1, --考勤有效
INLATE SMALLINT NOT NULL DEFAULT 1, --计迟到
OUTEARLY SMALLINT NOT NULL DEFAULT 1, --计早退
OVERTIME SMALLINT NOT NULL DEFAULT 1, --计加班
SEP SMALLINT NOT NULL DEFAULT 1, --
HOLIDAY SMALLINT NOT NULL DEFAULT 1, --假日休息
MINZU VARCHAR (8) NULL , --民族
[PASSWORD] VARCHAR (20) NULL , --口令
LUNCHDURATION SMALLINT NOT NULL DEFAULT 1, --有午休
MVerifyPass VARCHAR(10) NULL, --考勤验证密码
PHOTO Image NULL, --照片
CONSTRAINT USERIDS PRIMARY KEY (USERID)
)
;
CREATE UNIQUE INDEX USERFINGER ON TEMPLATE(USERID, FINGERID)
;
CREATE UNIQUE INDEX HOLIDAYNAME ON HOLIDAYS(HOLIDAYNAME)
;
CREATE INDEX DEPTNAME ON DEPARTMENTS(DEPTNAME)
;
CREATE UNIQUE INDEX EXCNOTE ON EXCNOTES(USERID, ATTDATE)
;
CREATE UNIQUE INDEX BADGENUMBER ON USERINFO(BADGENUMBER)
;
INSERT INTO DEPARTMENTS (DEPTNAME, SUPDEPTID) VALUES('总公司',0)
;
--假类表
Create Table LeaveClass(
LeaveId INT Identity(1,1) not null primary key, --假类ID号
LeaveName VARCHAR(20) not null, --假类名称
MinUnit float not null default 1, --最小统计单位
Unit smallint not null default 1, --统计单位
RemaindProc smallint not null default 1, --舍入控制
RemaindCount smallint not null default 1, --统计时累计
ReportSymbol varchar(4) not null default '-', --报表中的表示符号
Dect float not null default 0, --
Color int not null default 0, --显示颜色
Classify SMALLINT NOT null default 0) --计算类别,~bit7-是否计算为请假
;
--统计项目表
Create Table LeaveClass1(
LeaveId INT Identity(999,1) not null primary key, --999-公出
LeaveName VARCHAR(20) not null,
MinUnit float not null default 1,
Unit smallint not null default 0,
RemaindProc smallint not null default 2,
RemaindCount smallint not null default 1,
ReportSymbol varchar(4) not null default '_',
Dect float not null default 0,
LeaveType SMALLINT not null default 0, --bit0-是否统计项;bit1-是否异常情况项;
Color int not null default 0,
Classify SMALLINT not null default 0, --计算类别,bit0-按班次时段分类;bit1-按节假日分类
Calc text null) --计算单位
;
--班次时段类别设置表
CREATE TABLE SchClass(
schClassid INT identity(1,1) NOT NULL PRIMARY KEY, --时段类别ID号
schName VARCHAR(20) NOT null, --时段类别名称
StartTime datetime NOT NULL, --起始时间
EndTime datetime NOT NULL, --结束时间
LateMinutes int null, --计迟到分钟数
EarlyMinutes int null, --计早退分钟数
CheckIn int null default 1, --该时段上班需要签到
CheckOut int null default 1, --该时段下班需要签退
CheckInTime1 datetime NULL, --开始签到时间
CheckInTime2 datetime NULL, --结束签到时间
CheckOutTime1 datetime NULL, --开始签退时间
CheckOutTime2 datetime NULL, --结束签退时间
Color Int NULL default 16715535, --表示颜色
AutoBind SMALLINT NULL DEFAULT 1) --
;
--系统参数表
Create Table AttParam(
PARANAME VARCHAR (20) NOT NULL Primary key,
PARATYPE VARCHAR (2) NULL ,
PARAVALUE VARCHAR(100) NOT NULL)
;
insert into LeaveClass(LeaveName, Unit, ReportSymbol, Color)
values('病假', 1, 'B', 3398744);
insert into LeaveClass(LeaveName, Unit, ReportSymbol, Color)
values('事假', 1, 'S', 8421631);
insert into LeaveClass(LeaveName, Unit, ReportSymbol, Color)
values('探亲假', 1, 'T', 16744576);
insert into LeaveClass1(LeaveName, MinUnit, Unit, RemaindProc,
RemaindCount, ReportSymbol, LeaveType, Calc)
values('公出', 0.5, 3, 1, 1, 'G', 3, 'if(AttItem(LeaveType1)=999,AttItem(LeaveTime1),0)+if(AttItem(LeaveType2)=999,AttItem(LeaveTime2),0)+if(AttItem(LeaveType3)=999,AttItem(LeaveTime3),0)+if(AttItem(LeaveType4)=999,AttItem(LeaveTime4),0)+if(AttItem(LeaveType5)=999,AttItem(LeaveTime5),0)');
insert into LeaveClass1(LeaveName, MinUnit, Unit, RemaindProc,
RemaindCount, ReportSymbol, LeaveType)
values('正常', 0.5, 3, 1, 0, ' ', 3);
insert into LeaveClass1(LeaveName, MinUnit, Unit, RemaindProc,
RemaindCount, ReportSymbol, LeaveType, Calc)
values('迟到', 10, 2, 2, 1, '>', 3, 'AttItem(minLater)');
insert into LeaveClass1(LeaveName, MinUnit, Unit, RemaindProc,
RemaindCount, ReportSymbol, LeaveType, Calc)
values('早退', 10, 2, 2, 1, '<', 3, 'AttItem(minEarly)');
insert into LeaveClass1(LeaveName, MinUnit, Unit, RemaindProc,
RemaindCount, ReportSymbol, LeaveType, Calc)
values('请假', 1, 1, 1, 1, '假', 3,
'if((AttItem(LeaveType1)>0) and (AttItem(LeaveType1)<999),AttItem(LeaveTime1),0)+if((AttItem(LeaveType2)>0) and (AttItem(LeaveType2)<999),AttItem(LeaveTime2),0)+if((AttItem(LeaveType3)>0) and (AttItem(LeaveType3)<999),AttItem(LeaveTime3),0)+if((AttItem(LeaveType4)>0) and (AttItem(LeaveType4)<999),AttItem(LeaveTime4),0)+if((AttItem(LeaveType5)>0) and (AttItem(LeaveType5)<999),AttItem(LeaveTime5),0)');
insert into LeaveClass1(LeaveName, MinUnit, Unit, RemaindProc,
RemaindCount, ReportSymbol, LeaveType, Calc)
values('旷工', 0.5, 3, 1, 0, '旷', 3, 'AttItem(MinAbsent)');
insert into LeaveClass1(LeaveName, MinUnit, Unit, RemaindProc,
RemaindCount, ReportSymbol, LeaveType, Calc)
values('加班', 1, 1, 1, 1, '+', 3, 'AttItem(MinOverTime)');
insert into LeaveClass1(LeaveName, MinUnit, Unit, RemaindProc,
RemaindCount, ReportSymbol, LeaveType, Calc)
values('节日加班', 1, 1, 0, 1, '=', 0, 'if(HolidayId(1)=1, AttItem(MinOverTime),0)');
insert into LeaveClass1(LeaveName, MinUnit, Unit, RemaindProc,
RemaindCount, ReportSymbol, LeaveType)
values('休息日', 0.5, 3, 2, 1, '-', 2);
insert into LeaveClass1(LeaveName, MinUnit, Unit, RemaindProc,
RemaindCount, ReportSymbol, LeaveType, Calc)
values('未签到', 1, 4, 2, 1, '[', 2,
'If(AttItem(CheckIn)=null,If(AttItem(OnDuty)=null,0,if(((AttItem(LeaveStart1)=null) or (AttItem(LeaveStart1)>AttItem(OnDuty))) and AttItem(DutyOn),1,0)),0)');
insert into LeaveClass1(LeaveName, MinUnit, Unit, RemaindProc,
RemaindCount, ReportSymbol, LeaveType, Calc)
values('未签退', 1, 4, 2, 1, ']', 2,
'If(AttItem(CheckOut)=null,If(AttItem(OffDuty)=null,0,if((AttItem(LeaveEnd1)=null) or (AttItem(LeaveEnd1)<AttItem(OffDuty)),if((AttItem(LeaveEnd2)=null) or (AttItem(LeaveEnd2)<AttItem(OffDuty)),if(((AttItem(LeaveEnd3)=null) or (AttItem(LeaveEnd3)<AttItem(OffDuty))) and AttItem(DutyOff),1,0),0),0)),0)');
insert into LeaveClass1(LeaveName, MinUnit, Unit, RemaindProc,
RemaindCount, ReportSymbol, LeaveType)
values('离岗未签到', 1, 4, 2, 1, '{', 6);
insert into LeaveClass1(LeaveName, MinUnit, Unit, RemaindProc,
RemaindCount, ReportSymbol, LeaveType)
values('离岗未签退', 1, 4, 2, 1, '}', 6);
insert into LeaveClass1(LeaveName, MinUnit, Unit, RemaindProc,
RemaindCount, ReportSymbol, LeaveType)
values('离岗', 1, 1, 2, 1, 'L', 3);
insert into AttParam(ParaName,ParaValue) values('MinsEarly',5);
insert into AttParam(ParaName,ParaValue) values('MinsLate',10);
insert into AttParam(ParaName,ParaValue) values('MinsNoBreakIn',60);
insert into AttParam(ParaName,ParaValue) values('MinsNoBreakOut',60);
insert into AttParam(ParaName,ParaValue) values('MinsNoIn',60);
insert into AttParam(ParaName,ParaValue) values('MinsNoLeave',60);
insert into AttParam(ParaName,ParaValue) values('MinsNotOverTime',60);
insert into AttParam(ParaName,ParaValue) values('MinsWorkDay',420);
insert into AttParam(ParaName,ParaValue) values('NoBreakIn',1012);
insert into AttParam(ParaName,ParaValue) values('NoBreakOut',1012);
insert into AttParam(ParaName,ParaValue) values('NoIn',1001);
insert into AttParam(ParaName,ParaValue) values('NoLeave',1002);
insert into AttParam(ParaName,ParaValue) values('OutOverTime',0);
insert into AttParam(ParaName,ParaValue) values('TwoDay',0);
insert into AttParam(ParaName,ParaValue) values('CheckInColor',16777151);
insert into AttParam(ParaName,ParaValue) values('CheckOutColor',12910591);
insert into AttParam(ParaName,ParaValue) values('DBVersion',167);
㈥ 利用C#连接sql2005数据库,进行签到签退。员工可以签到,签退操作;
做个OA啊,你要的功能都有
㈦ sql已经获取签到人员,怎样获取未签到人员
....这东西,,我去,,,设计数据表如下
ID=自动编号,数字型
Ren_ID=签到人员名单,数字型
Year_NUM=签到时间年份,文本型,如答毕:2014
Month_NUM=签到时间月份,文本型,如:1月,2月
Check_time=签到否桐举蚂与签到时间,文本型,如局埋: 已签到|08:30,未签到|,未签到|,已签到|07:59,
㈧ 连续签到的天数,并排序,求这个sql语句该怎么写
这里有一个采用遍历的方式获取指定用户连续签到的方法分享,
账号连续签到天数的获取
实现思路:采用遍历循环的方式,依次从大到小的比对用户是否签到
如有疑问,及时沟通!
㈨ 如何根据id统计签到表中每个人的签到次数(sql)
select id,count(*) as 次数
from table_name
group by id
㈩ 如何实现签到打卡的位置信息写入后台数据库
1、首先,在后台数据库中建立一个表,用来存储签到打卡的位置信息,表中包括签到者的ID、签到时间、签到地点等字段。
2、在签到时,让签到者使用手机定位获取自己的位置信息,将获取的位置信息(经纬度)发送到后台服纳汪务器。
3、后台服务器接收到签到者的位置信息后,将其转换为具体的地址,并将签到者的ID、签到时间、签到地点等信洞升仔息写入到后台数据库中。
4、最后,将签到信息返回给签笑饥到者,以确认签到成功。