2010-02-27 184 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