2010-02-27 178 views
3

我正在为处理调度和处理重复事件的应用程序创建一个表。我需要指出事件可能在哪些日子和时间发生(例如每周一和周三下午1点)。是否有一种数据类型只能处理一周中的几天,而无需输入特定的日期,或者是否需要创建另一个包含星期几的表格并将其与FK一起引用?这显然是不可取的,因为它会使处理事件在午夜之前开始,在午夜之后结束更复杂。SQL Server日数据类型?

回答

3

使用smallint作为星期几。

如果您使用的是SQL Server 2008,则当前时间列中会有一个新的time数据类型,否则您仍然需要使用datetime数据类型。

+2

我要添加的一件事是在列上创建一个“CHECK”约束,要求值介于1和7之间(或0和6,取决于实现)。另外...为什么smallint而不是tinyint? – Aaronaught 2010-02-27 02:26:26

+0

@Aaronaught:好点。 – 2010-02-27 02:35:44

+0

@Aaronaught:有趣的是,多年以后,另一位开发人员会来认为星期几开始于星期一,并为此编写代码(并且可能在代码中使用枚举枚举)。另一个开发人员会认为星期日开始。有可能有些人不知道为什么你一周中的每天都有数字而不是角色。我建议创建另一个表格,将一个数字映射到一周中的某一天;并在一周的几天内引用该表。它额外的工作,可能是过度杀戮,但可以拯救未来的团队在未来的恶劣生产错误。 – Phil 2012-01-26 03:33:29