
1员工信息表(包括 职务(级别),入职时间(工龄),部门等)
2部门信息表(分组表)
3工时总表(记录每个月的实际出勤数)(员工号,年度,1月工时,2月工时12月工时)
4休假总表(记录各种假的基数,已休数,剩余数)(员工号,年度,年假基数,上年剩余,已休天数,未休天数,病假基数已休天数,未休天数,其它假已休天数)
5 考勤明细表(员工号,考勤日期,工时数)
6 休假明细表(员工 号,休假日期,休假类型,休假小时数)
7 休假类型表
8 工作日表(只需要设置发生状态变化的,周一至周五缺省认为是工作日,周六日为休息日,如10月1日是周一,要设为非工作日,如果刚好是周六,则不需要设置)
9用户表(包括 权限设置等)
这个需要建一个存储过程和一个数据库作业和一个返回随机时间段的函数才能实现
如果有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--属性--启动类型--选择"自动启动"--确定
1、在小程序后台开发者工具中新建一个云数据库,在该数据库中创建两个集合,一个用于存储签到规则,一个用于存储签到记录。
2、在小程序的代码中编写签到页面的前端展示和与后端交互的业务逻辑代码,通过JavaScript获取用户签到信息并向云数据库中的签到记录集合中插入一条签到记录,记录用户签到的时间、签到的群组和当前用户的信息等必要信息。
以上就是关于求问教务系统SQL数据库 。考勤 请假 节假日之类要怎么设计数据库,(用户,用户中还有分组=部门,然后有)全部的内容,包括:求问教务系统SQL数据库 。考勤 请假 节假日之类要怎么设计数据库,(用户,用户中还有分组=部门,然后有)、SQL2000数据库问题,现在有两张表,一张员工表和一张每日签到表,能不能建立一个触发器、微信小程序群签到怎么记录服务时长等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)