1

挑战: 我有一个要求,我必须实现重复性事件。我正在存储事件将再次发生的星期几、时间和日期范围。

可能的解决方案: 将时间和星期几存储为字符串和枚举。存储当前并设置当天的时间和日期?

问题:存储时间和星期几的最佳做法是什么?

EDT:我正在使用 SQL Server 数据库

4

2 回答 2

3

另一种选择是让计算列代表您所追求的部分。

CREATE TABLE dbo.foo
(
  bar DATETIME,
  bar_day_of_week AS DATEPART(WEEKDAY, bar),
  bar_time AS CONVERT(TIME, bar)
);

INSERT dbo.foo(bar) SELECT GETDATE();

SELECT bar, bar_day_of_week, bar_time FROM dbo.foo;
于 2012-06-04T19:28:12.983 回答
2

这种最佳方法可能取决于您使用的数据库。但是,有两种通用的方法,都很合理。

第一种是以数据库的本机格式存储日期和时间。大多数数据库都具有从日期时间类型中提取星期几和时间的功能。您将使用这些函数编写查询。通常,您会将这些存储为一个字段,但有时您可能希望将日期和时间部分分开。

二是要有日历表。日历表将以日期或 dateid 作为键,然后包含您想了解的列。星期几将是一个明显的列。

在某些情况下,日历表是首选解决方案。例如,如果您要将应用程序国际化,那么能够从表中获取星期几可以更容易地获取字符串英语、希腊语、中文、俄语、斯瓦希里语或任何您喜欢的语言。或者,如果您想跟踪特定的假期,那么日历表也可以存储此信息。或者,如果您的业务运行在一个奇怪的财务日历上(例如 5-4-4),那么日历表是一个不错的选择。

无论哪种情况,您都不需要在表中存储多余的日期信息。您应该从内置函数或通过在参考表中查找所需内容来派生它。

于 2012-06-04T18:37:48.723 回答