Sql server 2005 为什么';SQL Server是否有纯日期和纯时间数据类型?

Sql server 2005 为什么';SQL Server是否有纯日期和纯时间数据类型?,sql-server-2005,datetime,types,Sql Server 2005,Datetime,Types,我有几个SQL Server表,其中有一个datetime字段,实际上只需要包含日期。。。事实上,它是一个datetime对象违反了数据完整性,因为数据可以插入一个时间,而这个时间对于这个字段来说是无效的。结果是,我们必须转换它,并在每次使用它时去掉时间。我们已经考虑添加触发器,以确保没有数据可以在附加时间的情况下进入。。。但在我看来,这应该是数据库软件的一部分,不需要每次都进行专门编程 为什么SQL Server没有单独的日期和时间数据类型?这在不久的将来会改变吗?其他数据库平台是否具有此功能

我有几个SQL Server表,其中有一个datetime字段,实际上只需要包含日期。。。事实上,它是一个datetime对象违反了数据完整性,因为数据可以插入一个时间,而这个时间对于这个字段来说是无效的。结果是,我们必须转换它,并在每次使用它时去掉时间。我们已经考虑添加触发器,以确保没有数据可以在附加时间的情况下进入。。。但在我看来,这应该是数据库软件的一部分,不需要每次都进行专门编程


为什么SQL Server没有单独的日期和时间数据类型?这在不久的将来会改变吗?其他数据库平台是否具有此功能?

SQL Server 2008具有日期和时间数据类型


您使用的是什么版本?

自2008版以来,SQL Server有一个纯日期和时间数据类型,他们还添加了一系列新的日期时间类型,现在它也可以追溯到第一年,而不是1753年(哇,快速回答。)我想我们还是在2005年。。。是不是2008年才加的?所以。。。如果您仍然使用较旧的版本,那么可以接受的实现是什么?2005年和更早版本的date解决方案只是忽略时间部分,并在需要时进行修剪。对于时间,请使用标准的日期部分,如1/1/1900。@froadie升级到新的数据类型,即使它们可用,仍然是一项重要的工作-如果您可以在2005年更改架构,请添加一个持久化的计算列,该列将删除时间部分,并且在任何地方都不使用基础日期时间。如果您有一个视图层或存储过程层,这是一个相当简单的重构,可以停止向任何人公开基础datetime,并且您甚至不需要更改该层之上的客户机应用程序。