我刚刚发现了DATETIME2
的另一个优点:它避免了Python adodbapi
模块中的一个错误,如果将具有非零微秒的标准库datetime
值传递给DATETIME
列,则该模块会崩溃,但如果将该列定义为DATETIME2
则可以正常工作。
datetime2
,但以下是一些关于为什么不使用datetime2的思考(作者:Nikola Ilic):
GETDATE()+1
)的简单方法。DATEADD
或DATEDIFF
进行比较时,都会隐式地将数据转换为datetime
类型。我认为使用DATETIME2
来存储日期
是更好的方式,因为它比DATETIME
更高效。在SQL Server 2008
中,您可以使用DATETIME2
,它可以存储日期和时间,需要6-8个字节
进行存储,并具有100纳秒
的精度。因此,任何需要更高时间精度的人都会选择DATETIME2
。
接受的答案很好,只是要知道如果你将DateTime2发送到前端 - 它会被四舍五入为普通的DateTime等效项。
这对我造成了问题,因为在我的解决方案中,当重新提交时,我必须比较发送的内容与数据库中的内容,而我的简单比较'=='没有考虑到四舍五入。所以必须添加它。
Select ValidUntil + 1
from Documents
上述SQL语句无法与DateTime2字段一起使用。它会返回一个错误:"操作数类型冲突:datetime2与int不兼容"
添加1以获取下一天是开发人员多年来处理日期的常见方法。现在,微软有了一个超级新的datetime2字段,却无法处理这个简单的功能。
"让我们使用这种比旧类型更糟糕的新类型",我不这么认为!
datetime
和datetime2
数据类型都是在SQL Server 2008中引入的。您还会从自古以来就存在的date
类型中获得Operand type clash: date is incompatible with int
。这三种数据类型都可以很好地与dateadd(dd, 1, ...)
一起使用。 - AlwaysLearningdatetime
在Microsoft SQL Server 4.0中可用,当时代码库仍与sybase共享。我不确定确切的版本是何时添加的,但它已经存在很长时间了。 - undefined