我認爲是有兩種可能的方式去:
(1)商店子日期,如:
'2013' -- year 2013
'2013-01' -- year 2013, January
'2013-01-01' -- year 2013, January 1
(2)商店3不同的列,年,月,日(你可以建立年份+月份+日期而沒有問題)
2013 null null -- year 2013
2013 1 null -- year 2013, January
2013 1 1 -- year 2013, January 1st
哪一個最好取決於你想如何查詢數據。假設你有存儲過程並且你想傳遞一個參數來讓所有的行都進入狀態。
如果(1),你傳遞字符串@Date = '2013-01'
作爲參數,你想獲得的所有行一年= 2013和月= 01所以where
條款是這樣的:
where left(Date, len(@Date)) = @Date
如果(2),您通過三個參數 - @Year = 2013, @Month = 1, @Day = null
和where
條款是這樣的:
where
Year = @Year and -- Supposing @Year is always not null
(@Month is null or @Month is not null and Month = @Month) and
(@Day is null or @Day is not null and Day = @Day)
根據您想要如何處理行,這可能會更復雜。例如,如果您提供像2013-01
這樣的參數,那麼您是否想要在月份= null或不在的行?另一方面,如果你想通過日期並檢查它是否落入日期範圍內,那麼Gordon Linoff的建議是一個很好的使用方法。
請輸入一些編碼。 –
這似乎是icky。我想不出一種簡潔的方式來表示數據。 – user2246674
你想運行什麼樣的查詢? –