SQL Server DateTime2(0)与日期

时间:2015-04-06 19:38:05

标签: sql sql-server

使用SQL Server的DateTime2(精度为0)表示日期而不是内置日期字段有什么影响。

在任何一种情况下,我担心的是防止意外的时间输入,但是我应该注意存储或性能方面的考虑吗?

2 个答案:

答案 0 :(得分:17)

DateTime2(0)将存储没有小数值的日期时间,即YYYY-MM-DD hh:mm:ss

SELECT CONVERT(DateTime2(0) , GETDATE())
RESULT: 2015-04-06 20:47:17

存储数据就像日期只存储日期,YYYY-MM-DD没有任何时间值。

SELECT CONVERT(Date , GETDATE())
RESULT:  2015-04-06

如果您只对日期感兴趣,请使用DATE数据类型。

DATETIME26 bytes用于精确less than 3,而DATE将使用3 bytes

日期是DATETIME(0)大小的一半,因此它也会表现得更好,因为sql server将处理更少的数据并且也会节省磁盘空间。

答案 1 :(得分:9)

它不会起作用。根据MSDN,Datetime2的最小大小是六个字节,并且将包含hh:mm:ss,因此它可以包含时间组件(默认为午夜)。正如其他响应者所指出的那样,你必须使用日期类型来保证不保存时间部分并占用三个字节。

https://technet.microsoft.com/en-us/library/bb677335%28v=sql.105%29.aspx