我有一个sql表,我将存储每个员工的时间记录(IN和OUT)。
表架构是:
所以,为了更容易计算工作时间,假期,假期等。我想在同一张表中加入一个新字段:
isweekday
:如果当天是工作日,我会通知我们(将有助于将来的计算)但也想知道当天(星期一,星期二等)我正在考虑从1到7的 tinyint 数据类型,其中1是星期一,7是星期日。
任何建议或推荐?在C#或SQL中,星期一是否等于星期的第一天?
答案 0 :(得分:1)
添加isholiday
标志非常有用。另一种方法是在表格中查找假期,但直接在记录中存储数据很容易。并且,因为你已经有位标志,所以另外一个标志可能不会使该字段更大。
识别星期几或周末不太有用。 SQL Server已经提供了执行此操作的功能,尤其是datepart()
和datename()
。
在某些情况下,这些可能难以使用。例如,如果您必须编写在任何系统上运行的代码,无论语言和本周开始时的任何本地首选项,那么将信息存储在记录中可能会很有用。也就是说,datepart()
和datename()
不是确定性的,因为它们依赖于系统参数。但是,对于为一种文化编写的大多数应用程序而言,这不是什么大问题。
此外,在我能想象的某些情况下,调用系统函数的开销可能大于从记录中读取值的时间。在CPU严重受限的环境中,您可能希望存储标志。但是,我怀疑还会有其他更重要的优化。