【发布时间】:2011-09-30 12:54:22
【问题描述】:
我正在尝试为报告应用程序建模 DateRange 概念。某些日期范围需要是绝对的,2011 年 3 月 1 日 - 2011 年 3 月 31 日。其他日期范围是相对于当前日期、过去 30 天、下周等。将这些数据存储在 SQL 表中的最佳方式是什么?
显然,对于绝对范围,我可以有一个 BeginDate 和 EndDate。对于相对范围,具有 InceptionDate 和整数 RelativeDays 列是有意义的。如何在不实现上下文的情况下将这两个想法合并到一个表中,即提到所有四列并使用 XOR 逻辑填充 4 列中的 2 列。
由于具有上下文驱动的列,我拒绝了两种可能的模式:
CREATE TABLE DateRange
(
BeginDate DATETIME NULL,
EndDate DATETIME NULL,
InceptionDate DATETIME NULL,
RelativeDays INT NULL
)
或
CREATE TABLE DateRange
(
InceptionDate DATETIME NULL,
BeginDaysRelative INT NULL,
EndDaysRelative INT NULL
)
感谢您的建议!
【问题讨论】:
标签: sql schema date-range