2012-07-02 85 views
0

我知道這可能看起來是一個新手的問​​題,但我很好奇,爲什麼在SQL日期必須是這樣的:爲什麼SQL Server需要這種精確的日期格式?

FieldBeginDate 
2010-04-01 00:00:00.000 

FieldEndDate 
2010-12-31 23:59:00.000 

爲什麼三小數或精度?並且有沒有辦法將日期顯示爲僅顯示月份 - 日期?謝謝!

+1

我知道你已經接受一個答案,但你知道你可以使用convert命令將您選擇的格式轉換的日期。如果使用帶有nvarchar(10)的convert,它會自動知道如何將其轉換爲適合該大小約束的東西。 – RetroCoder

回答

2

SQL Server 2008有一個DATE類型,它消除了時間。

使用DATE類型,而不是DATETIME型也只需要一個int存儲的價值...而不是存儲一個DATETIME

編輯所需的 int S:你也請問爲什麼有三位小數......這是因爲存儲值的精度默認爲(@AaronBetrand在下面的評論中恰當地指出,您的可以獲得擴展精度)。 SQL Server以百分之一秒爲單位存儲時間增量增量。

這裏是SQLDenis的話題:
http://blogs.lessthandot.com/index.php/DataMgmt/DataDesign/how-are-dates-stored-in-sql-server

+3

還有'DATETIME2(7)',它允許7位小數位而不是3位。並且沒有可怕的3ms四捨五入問題。 –

+0

準確地說,DATE只需要3個字節,而對於int來說只需要4個字節。 –

+0

@AaronBertrand inteed,但OP似乎要求*少*精度。 – Matthew