SQL Server记录轮班的实际操作技巧描述

数据库 SQL Server
我们今天主要讲述的是SQL Server记录轮班的实际操作技巧,以及在实际操作过程中遇到的一些问题的解决,以下就是文章的主要内容的描述。

以下的文章主要向大家描述的是SQL Server记录轮班的实际操作技巧,我们是以举例子的方式来对SQL Server记录轮班的实际操作技巧做一更为详细的介绍,以下就是相关内容的具体描述。

例:公司员工采取三个轮班制度:凌晨0:00到早上8:00为***班,早上8:00到下午4:00为第二班,下午4:00到晚上12:00为第三班。

员工使用电子时钟进行签名,这种电子签名可以自动将记录添加到SQL Server数据库中。但是,有时候,需要增加一个夜班;即使这个轮班发生在第二天,它仍然会被认为是第三班。

你也许希望根据轮班对记录进行分组,但是在你的计划中会有两个非常令人头痛的问题:

(1)不是所有的雇员都是按时到达的;

(2)有时候员工工作的时间会比他们的一个轮班的时间长一些。

为了能在你的列表中得到正确的分组,你必须假设所有的员工能在一个轮班的开始和结束时间之间的任意时间开始工作。

使用CASE语句是一种解决办法。Listing A中的SQL语句告诉我们,在创建测试表没有错误的情况下,它是如何工作的。

为了使程序代码完全准确的运行,你需要在时间的小窗口中得到每一个轮班的开始时间和下一个轮班的结束时间。在刚才的例子中,你可以用'15:59:59.123'这个值代替@StartTime,然后再重新运行代码。这时候,你必须在每一个轮班结束的分界点上增加999毫秒。

解决方案

这个例子假设轮班时间从来没有改变过,但是如果改变了轮班时间该怎么办呢?你必须仿照这个例子并根据改变了的时间写出所有的代码。

一个更好一点的主意就是,针对我们的轮班创建一个表来调用Shifts的开始时间和结束时间。在这个表中,你可以修改Case语句来查找StopTime列。

Listing B中包含了创建Shifts表并向该表中增加记录的代码。代码在一个轮班中设置了时间后,这样使代码看上去既简单又灵活:

  1. DECLARE @StartTime VARCHAR(20) SET @StartTime ='22:59:59' 
  2. SELECTTOP 1 ShiftName FROM ShiftWork.Shifts WHERE Shifts.  
  3. StartTime <= @StartTime ORDERBY StartTime DESC  

我之所以要将轮班记录进行降序排列,是为了避免第三个轮班的边界问题。我将用一些测试案例来论证我的结论,这些内容你可以在Listing C中看到。

实际上,你可以将这个逻辑应用到TemeCards表的记录中去,而不需要创建另外的表,也就不需要在表中增加数据了。我同样使用一个简单的变量来论证我的逻辑。

以上的相关内容就是对SQL Server记录轮班的技巧的介绍,望你能有所收获。

 SQL Server记录轮班的技巧

上述的相关内容就是对SQL Server记录轮班的技巧的描述,希望会给你带来一些帮助在此方面。

【编辑推荐】

  1. SQL Server处理空值操作中的3大问题有哪些?
  2. SQL Server 2000优化SELECT 语句的方案介绍
  3. SQL Server 2000文件损坏的修复方案
  4. 改善SQL Server安全规划的6步骤
  5. SQL Server 2000重建索引的实际操作流程
责任编辑:佚名 来源: 比特网
相关推荐

2010-06-28 13:27:33

SQL Server视

2010-07-06 09:20:30

SQL Server查

2011-04-01 10:09:21

SQL Server记录轮班

2010-07-07 11:03:21

SQL Server索

2010-07-21 15:22:07

2010-07-07 17:05:39

SQL Server数

2010-07-16 11:10:52

SQL server

2010-06-28 12:39:14

SQL Server数

2010-07-23 09:25:50

SQL Server导

2010-03-29 15:57:07

Oracle exp备

2010-06-30 17:56:06

2010-06-28 12:27:35

SQL Server

2010-06-17 12:26:51

SQL Server索

2010-07-12 10:13:44

SQL Server表

2010-06-18 08:30:48

SQL Server

2010-05-11 09:51:57

MySQL表修改

2010-07-02 11:10:56

SQL Server

2010-07-23 14:26:37

SQL Server存

2010-07-20 11:13:09

SQL Server日

2010-04-16 17:17:31

Oracle访问
点赞
收藏

51CTO技术栈公众号