SQL存储日,周或周末日的最佳方式(时间和出勤)

时间:2014-04-26 23:17:04

标签: c# sql sql-server

我有一个sql表,我将存储每个员工的时间记录(IN和OUT)。

表架构是:

enter image description here

所以,为了更容易计算工作时间,假期,假期等。我想在同一张表中加入一个新字段:

  • isweekday:如果当天是工作日,我会通知我们(将有助于将来的计算)

但也想知道当天(星期一,星期二等)我正在考虑从1到7的 tinyint 数据类型,其中1是星期一,7是星期日。

任何建议或推荐?在C#或SQL中,星期一是否等于星期的第一天?

1 个答案:

答案 0 :(得分:1)

添加isholiday标志非常有用。另一种方法是在表格中查找假期,但直接在记录中存储数据很容易。并且,因为你已经有位标志,所以另外一个标志可能不会使该字段更大。

识别星期几或周末不太有用。 SQL Server已经提供了执行此操作的功能,尤其是datepart()datename()

在某些情况下,这些可能难以使用。例如,如果您必须编写在任何系统上运行的代码,无论语言和本周开始时的任何本地首选项,那么将信息存储在记录中可能会很有用。也就是说,datepart()datename()不是确定性的,因为它们依赖于系统参数。但是,对于为一种文化编写的大多数应用程序而言,这不是什么大问题。

此外,在我能想象的某些情况下,调用系统函数的开销可能大于从记录中读取值的时间。在CPU严重受限的环境中,您可能希望存储标志。但是,我怀疑还会有其他更重要的优化。