2012-09-21 13 views
-2

SQLs內置DateTime類型有什麼優點比nvarchar類型更好嗎?處理日期時,哪一個更受歡迎? SQL日期時間或nvarchar字符串?

如果是你,你會使用哪一個?

我需要在我的SQLServer數據庫中存儲日期,我很想知道哪一個更好,爲什麼更好。

我也想知道會發生什麼,如果我例如存儲日期字符串文字(我的意思是nvarchar)?搜索需要更長的時間嗎?或者他們在表現方面相同?

併爲最後一個問題。我怎樣才能從我的C#應用​​程序發送一個日期到tye的sql字段DateTime?它與c#的DateTime有什麼不同嗎?

回答

3

給你一個date datetype是有原因的,你爲什麼要不是用它?

將「3/2/2012」存儲在文本字段時會發生什麼?是3月2日?是2月3日?

將日期存儲在datedatetime字段中,並在事後處理日期的任何格式。

編輯

如果你有存儲日期像1391/7/1,你的選擇是:

  • 假設你正在使用SQL Server 2008或更高版本,使用datetime2數據類型;它允許早於1753/01/01的日期(這是datetime停止的日期)。
  • 假設您使用的是SQL Server 2005或更早版本,請將日期存儲爲羅馬日曆日期,然後在應用程序中使用日期/時間函數將日期和時間轉換爲波斯日曆。
+0

有不只是一個日期時間多在SQL中,我應該使用哪一個呢?我還打算日期存儲在波斯語(DOTNET框架4支持的話),我想在未來面臨任何麻煩,雖然。 – Breeze

+1

爲什麼你需要以波斯語存儲日期..日期代表日期,文化是無關緊要的,你的表示層應該處理在正確的文化中顯示日期 – Baz1nga

+0

波斯語中的日期在1300到1400之間開始,而在英語中我們1900至2050年爲example.Suppose我需要像一個日期存儲(1391年7月1日爲(年/月/日))將在簡單地保存?日期驗證呢? – Breeze

2

使用正確的數據類型(date/datetime/datetime2,依賴於時間組件的版本和要求)。

優點是存儲比存儲爲字符串更加緊湊(尤其是nvarchar,因爲這是雙字節)。建立在對2月30日無效日期的驗證中。正確排序。在使用日期函數時,避免需要將其轉換回正確的數據類型。

2

如果我存儲DateTime值,並且我期望基於它進行基於日期的計算,那麼我將使用DateTime。

將日期存儲爲字符串(varchars)引入了各種後勤問題,其中最重要的是以適當的格式呈現日期。再一次,這有利於DateTime。

1

我會用DateTime去,因爲你可以直接使用它的各種功能。 字符串不會太麻煩,但是每次你想用它來做什麼時你都必須投射數據。

搜索兩種類型的字段時沒有實際的性能差異,所以在使用日期值時使用DateTime進行比字符串更好。

1

你必須意識到的datetime數據類型像其他數據類型提供了一個原因,你應該使用清楚地描述您的數據除了這一點,你獲得的所有功能/操作是特殊的datetime數據類型的數據類型..

一個最大的收穫是直接,如果你使用nvarchar的爲你的數據類型,這將是不可能的數據的正確排序。即使你認爲你不需要馬上分揀會有一段時間在未來,這將是有用。

而且日期驗證的東西,你會從中受益。沒有的日期格式存儲即日/或MM/DD等混亂..

1

有關於對象討論很多。在SQLCentral論壇上有關於此特定主題DateTime or nvarchar的好帖子。

總之,nvarchar的兩倍更長的日期時間,所以需要更多的空間和在長範圍,影響它的任何動作速度會變慢。你會有一些驗證問題等等。

相關問題