2012-07-02 47 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