当前位置:首页 » 数据仓库 » 签到表数据库设计
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

签到表数据库设计

发布时间: 2022-09-25 06:32:42

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--属性--启动类型--选择"自动启动"--确定.

❷ 单位人数少,怎样设计会议签到表

时间、主持人、记录人、地点、会议主题,然后下面写参会人员
序号、部门、时间日期、姓名、备注
就好了,希望能帮到您

❸ 类似钉钉打卡的签到的数据库表字段怎么设计

CREATETABLE[dbo].[tb_e_UserWorkTime](
[UserWorkTimeID][int]IDENTITY(1,1)NOTNULL,
[UserID][varchar](20)NOTNULL,
[SWorkTime][datetime]NOTNULL,
[EWorkTime][datetime]NOTNULL,
)ON[PRIMARY]

GO
SETANSI_PADDINGOFF
GO
EXECsys.sp_addextendedproperty@name=N'MS_Description',@value=N'员工用户ID',@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'tb_e_UserWorkTime',@level2type=N'COLUMN',@level2name=N'UserID'
GO
EXECsys.sp_addextendedproperty@name=N'MS_Description',@value=N'上班时间',@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'tb_e_UserWorkTime',@level2type=N'COLUMN',@level2name=N'SWorkTime'
GO
EXECsys.sp_addextendedproperty@name=N'MS_Description',@value=N'下班时间',@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'tb_e_UserWorkTime',@level2type=N'COLUMN',@level2name=N'EWorkTime'

❹ mysql签到表怎么设计

点击签到,如果当天已经签过到了,提示已经签过到了;如果从来没有签过到,插入数据,把积分设置为1,连续签到次数设置为1,最后修改时间设置为当天,历史为1;如果今天没有签过到,首先计算出有多少天没签到了,如果是昨天签了的,连续签到次数加1,历史左移一位,积分按照积分规则加上;如果超过两天没有签到,连续签到次数设置为1,历史左移天数位,积分加上签到单次的积分,时间为当前的修改时间;

❺ 数据库管理员有哪证书怎么考拜托了各位 谢谢

1、Oracle的OCP认证。

2、要获取OCP认证,必须通过参加Oracle原厂培训(北京、上海、广州)或Oracle正式授权的WDP渠道的学习,才可以拿到Oracle认可的证书。

3、需要参加培训的相关课程:

OracleDatabase11g:AdministrationII。

❻ 签到表下面的合计数据不能自动调节怎么办

重新设置计算公式。
1、选择签到表合计数据的单元格,在上方功能栏处选择公式栏目,点击进入公式功能选项。
2、接着在公式栏目功能区中,选择自动求和公式,点击进行下一步操作。
3、点击自动求和公式后,签到表格内会出现一个区域选定,此时将需要数据求和的区域选中,输入框中会出现对应的求和公式,此时按下回车键确认。
4、这样求和的总数就会自动调节并计算出来,并填充到选择的单元格中,成功地将选中的数据自动求和了。

❼ excel数据重新整理,签到表改考勤表。

举例说明。

例如有签到表如图: