这个需要建一个存储过程和一个数据库作业和一个返回随机时间段的函数才能实现
如果有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 + @MinutePartDiff100060 + @HourDecimal 36001000) @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 procedure 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--属性--启动类型--选择"自动启动"--确定
、首先查看时间段设置,确认考勤记录在签到/退的时间范围内。
2、其次,在数据库中查看你的考勤记录时间是否正确。需注意一点:在中午必须考勤的情况下,上午下班签退时间和下午上班的签到时间不能有交叉。
3、另外,出勤记录的状态需要检查。若有外出记录,外出返回、加班签到及签退的记录,软件默认为无效,不能进入正常统计。
扩展资料
考勤机设置了数据保护功能,可以试试通过进入设置里面关闭该功能。
1、用U盘
下载考勤数据时,指纹考勤机一般提示你下载“新记录”和“全部记录”,没有指定哪几天或哪一天的。
2、直接把U盘接在考勤机上,进入菜单-USB闪盘管理,点出下载就可以了,再把U盘取出,插入电脑USB口,打开软件中的菜单-USB闪盘管理,点从U盘导入记录数据至电脑就可以了。我们用的手机考勤,叮咚签到考勤记录随时可以查询或导出,简单快捷。
3、建议换个大点的U盘。
以上就是关于SQL2000数据库问题,现在有两张表,一张员工表和一张每日签到表,能不能建立一个触发器全部的内容,包括:SQL2000数据库问题,现在有两张表,一张员工表和一张每日签到表,能不能建立一个触发器、打卡考勤数据个人明细表少了,可是打卡记录有,怎么办、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)