使用SQL Server的DateTime2(精度为0)表示日期而不是内置日期字段有什么影响。
在任何一种情况下,我担心的是防止意外的时间输入,但是我应该注意存储或性能方面的考虑吗?
答案 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
数据类型。
DATETIME2
将6 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