哪一个:
日期时间日期时间2
在SQL Server 2008+中存储日期和时间的建议方法是什么?
我知道精度(可能还有存储空间)的差异,但现在忽略这些,是否有关于何时使用what的最佳实践文档,或者我们应该只使用datetime2?
哪一个:
日期时间日期时间2
在SQL Server 2008+中存储日期和时间的建议方法是什么?
我知道精度(可能还有存储空间)的差异,但现在忽略这些,是否有关于何时使用what的最佳实践文档,或者我们应该只使用datetime2?
当前回答
我认为DATETIME2是存储日期的更好方法,因为它比DATETIME。在SQL Server 2008中,您可以使用DATETIME2,它存储日期和时间,需要6-8个字节,精度为100纳秒。因此,任何需要更高时间精度的人都会想要DATETIME2。
其他回答
datetime2更好
日期时间范围:1753-01-01到9999-12-31,日期时间2范围:0001-01-01到9999-12/31datetime精度:0.0033秒,datetime2精度:100纳秒datetime获取8个字节,datetime2获取6到8个字节取决于精度(精度小于3时为6字节,精度3或4时为7字节,所有其他精度要求8字节,单击并查看下图)
如果您是Access开发人员,试图将Now()写入相关字段,则DateTime2会造成严重破坏。刚刚执行了Access->SQL 2008 R2迁移,它将所有日期时间字段作为DateTime2放入。当值爆炸时,用Now()追加一条记录。2012年1月1日下午2:53:04没事,但2012年10月1日凌晨2:53:44没有。
一旦性格改变了。希望它能帮助到某人。
虽然datetime2提高了精度,但有些客户端不支持date、time或datetime2,并强制您转换为字符串文本。微软特别提到了ODBC、OLE DB、JDBC和SqlClient这些数据类型的“底层”问题,并有一个图表显示了它们如何映射类型。
如果值兼容性超过精度,请使用datetime
正如其他答案所示,由于尺寸更小、精度更高,建议使用datetime2,但以下是Nikola Ilic关于为什么不使用datetime1的一些想法:
缺少(简单)对日期进行基本数学运算的可能性,如GETDATE()+1每次使用DATEADD或DATEDIFF进行比较时,都会完成到datetime的隐式数据转换SQL Server无法正确使用Datetime2列的统计信息,因为存储数据的方式会导致非最佳查询计划,从而降低性能
我认为DATETIME2是存储日期的更好方法,因为它比DATETIME。在SQL Server 2008中,您可以使用DATETIME2,它存储日期和时间,需要6-8个字节,精度为100纳秒。因此,任何需要更高时间精度的人都会想要DATETIME2。