使用SQL Server的DateTime2(精度为0)代表日期而不是内置Date字段会有什么影响。SQL Server DateTime2(0)与日期
无论是哪种情况,我的担心都是为了防止意外时间输入,但是我应该注意哪些存储或性能方面的考虑?
使用SQL Server的DateTime2(精度为0)代表日期而不是内置Date字段会有什么影响。SQL Server DateTime2(0)与日期
无论是哪种情况,我的担心都是为了防止意外时间输入,但是我应该注意哪些存储或性能方面的考虑?
它不起作用。根据MSDN,Datetime2的最小大小是六个字节,并且将包含hh:mm:ss,因此它可以并且将包含时间分量(默认为午夜)。正如其他响应者已经注意到,您必须使用日期类型来保证不保存时间部分并占用三个字节。
https://technet.microsoft.com/en-us/library/bb677335%28v=sql.105%29.aspx
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会处理更少的数据并且也会节省磁盘空间。
'DateTime2(0)'仍然允许您存储时间。 '日期'不会。 – JodyT
你的意思是DateTime2 v/s DateTime? DateTime2添加更多[精度](https://technet.microsoft.com/en-us/library/bb677335%28v=sql.105%29.aspx)到值的时间部分.. – abhi
@abhi,nope。我看到了一个我正在维护的项目中的差异,并想知道为什么会有所不同。 –