SQL Server记录轮班工作两方法
日期:2007年7月8日 作者: 查看:[大字体 中字体 小字体]-
假设你的公司员工采取三个轮班制度:凌晨0:00到早上8:00为第一班,早上8:00到下午4:00为第二班,下午4:00到晚上12:00为第三班。
员工使用电子时钟进行签名,这种电子签名可以自动将记录添加到SQL Server数据库中。但是,有时候,你需要增加一个夜班;即使这个轮班发生在第二天,它仍然会被认为是第三班。
你也许希望根据轮班对记录进行分组,但是在你的计划中会有两个非常令人头痛的问题:(1)不是所有的雇员都是按时到达的;(2)有时候员工工作的时间会比他们的一个轮班的时间长一些。
为了能在你的列表中得到正确的分组,你必须假设所有的员工能在一个轮班的开始和结束时间之间的任意时间开始工作。
使用CASE语句是一种解决办法。下面代码中的SQL语句告诉我们,在创建测试表没有错误的情况下,它是如何工作的。
DECLARE @StartTime VARCHAR(20)
SET @StartTime ='15:35:25.000'
SELECT CASE
WHEN CONVERT(DATETIME, @StartTime, 108)BETWEEN'08:00:00'AND'15:59:59' THEN 'First Shift'
WHEN CONVERT(DATETIME, @StartTime, 108)BETWEEN'16:00:00'AND'23:59:59' THEN 'Second Shift'
WHEN CONVERT(DATETIME, @StartTime, 108)BETWEEN'00:00:00'AND'07:59:59' THEN 'Third Shift'
ELSE 'UNKNOWN'
END AS Shift为了使程序代码完全准确的运行,你需要在时间的小窗口中得到每一个轮班的开始时间和下一个轮班的结束时间。在刚才的例子中,你可以用'15:59:59.123'这个值代替@StartTime,然后再重新运行代码。这时候,你必须在每一个轮班结束的分界点上增加999毫秒。
解决方案
这个例子假设轮班时间从来没有改变过,但是如果改变了轮班时间该怎么办呢?你必须仿照这个例子并根据改变了的时间写出所有的代码。
一个更好一点的主意就是,针对我们的轮班创建一个表来调用Shifts的开始时间和结束时间。在这个表中,你可以修改Case语句来查找StopTime列。
CREATESchema ShiftWork
GO
CREATETABLE ShiftWork.Shifts
(
StartTime Char(8)NOTNULLPRIMARYKEY,
ShiftName Varchar(20)NOTNULL
)
GO
INSERTINTO ShiftWork.Shifts
(StartTime, ShiftName)
VALUES
('08:00:00','First Shift')
INSERTINTO ShiftWork.Shifts - [1] [2] 下一页
-
- SQL Server记录轮班工作两方法 相关文章:
- ·SQL Server记录轮班工作两方法
- SQL Server记录轮班工作两方法 相关软件
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:理解 SQL Server 中系统表Sysobjects
精品推荐
热点TOP10
- ·SQL Server 练习题
- ·MS-SQL开发常用汇总和t-sql技巧集锦
- ·查询及删除重复记录的方法大全
- ·SQL server 2005安装问题汇总
- ·MS SQL的一些经典常用操作语句汇总
- ·SQL语法大全
- ·掌握SQL Server数据库的实用技巧
- ·解决用sa登录sql 2005失败的问题
- ·SQL Server建立应用程序安全性和程序角色
- ·轻松掌握使用 SQL Server 浏览器
- ·SQL Server安全问题全攻略之口令
- ·SQL Server 2005 中的分区表和索引
- ·sql server2000导入mdf文件
- ·一个复合查询方法
- ·如何创建SQL Server 2000故障转移群集
- ·SQL Server 2000企业版安装教程(1)
- ·SQL Server 2005 Reporting Services 初次使用感受
- ·使用用于SQL Server的IIS虚拟目录管理实用工具
- ·SQL Server中函数的用法两种
- ·改进SQL Server数据库系统安全五步走
特别推荐
- ·结束SQL注入隐患3招
- ·掌握SQL Server数据库的实用技巧
- ·SQL的简单查询
- ·快速解决SQL Server“安全疑难”相关问题
- ·SQL Server 2005:你应知道的13件事
- ·实例解析:减少SQL日志大小的三个好方法
- ·使用SQL2000将现有代码作为Web服务提供
- ·sql server 2000数据库置疑的解决方法
- ·SQL Server安全问题全攻略之口令
- ·XP上不能安装MicrosoftSQLSERVER2000吗
- ·解析Microsoft Sql Server中的like语句
- ·推荐;适合SQL初学者学习的SQL FAQ集锦
- ·SQL Server 2005 中的分区表和索引
- ·查询及删除重复记录的方法大全
- ·详细介绍优化SQL Server 2000的设置
- ·关于SQL SERVER 日志满的处理方法
- ·使用SQL Server 2000索引视图提高性能
- ·SQL server 2005安装问题汇总
- ·解决用sa登录sql 2005失败的问题
- ·简单三步走堵死SQL Server注入漏洞
