SQL Server DateTime2(0)与日期

Oli*_*ane 8 sql sql-server

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

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

M.A*_*Ali 18

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

SELECT CONVERT(DateTime2(0) , GETDATE())
RESULT: 2015-04-06 20:47:17
Run Code Online (Sandbox Code Playgroud)

像日期一样存储数据只会存储日期,即YYYY-MM-DD没有任何时间值.

SELECT CONVERT(Date , GETDATE())
RESULT:  2015-04-06
Run Code Online (Sandbox Code Playgroud)

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

DATETIME2将使用6 bytes的精度less than 3DATE将使用3 bytes.

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


ben*_*its 9

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

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