簡體   English   中英

使用SQL Server 2008日期數據類型存儲年份

[英]Using SQL Server 2008 Date Data Type to Store Year

在SQL 2008中以新的Date SQL類型存儲僅一年是否有意義? 我的老板想要這個,但是我們提示客戶以Web形式輸入年份(僅4個整數)。 我不明白為什么要使用Date數據類型,因為它還包括日和月,而且我已經將那些數據分離到了DB表的int字段中。

在我們的Web表單上,年份是可選的,因此,如果它們僅輸入“月”和“日”,對我來說將其存儲在日期類型的字段中是沒有意義的,因為年份必須是縮寫。 我想如果他們沒有輸入年份,那么我們可以做01-16-1900,然后我們只有一天和一個月..但是無論如何,對我來說這是一個hack。 我寧願將所有3個單獨的字段分開,因為我們有一個可選的值(年份)。 我看不到我們會要求年份,因為那是生日,我們已經討論過,如果無論如何要求年份,都會激怒顧客。

不要過度考慮這一點。 只需使用Date類型並完成它即可。

注意:

考慮到羅恩的回答,將每個日期部分分開存儲是時間上的倒退。 您實際上應該始終利用提供給您的工具。 日期類型是任何.NET語言的一等公民。

如果您不考慮日期,使用日期將節省空間。

http://msdn.microsoft.com/en-us/library/bb675168.aspx

不,這沒有道理。 這將導致數據庫中有更多空間,並且還會不必要地在您要查找年份的地方添加任何代碼。 您必須在每個查詢中使用DatePart()或在代碼中提取年份。 兩種方法都會影響性能。

但是,如果老板告訴您要這樣做,那么您可能應該這樣做。 我不會做這個問題。 你老板的理由是什么?

更正

我收回上面回答的部分內容,即“數據庫中有更多空間”。 我所指的性能節省是按年轉換為查詢。

如果沒有理由將單獨的day / month int列放入Date列中,那么我看不到為什么應該將可選的年份存儲為日期。

某些事情使我也希望將月/日列也視為“日期” ...但是我也喜歡“不要考慮過多”的另一種邏輯...

我個人將所有3個值(月,日,年)存儲為日期字段中的日期-如果不輸入年份,則默認為年份。 這樣,您就可以對有效的月份和日期進行自動驗證……除了2月29日且沒有年份,因為日期數學將不知道它是否是a年。

將它們存儲為整數意味着您必須自己進行所有驗證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM