繁体   English   中英

在SQL Server中,在两个单独的日期列中拆分时间和日期是最佳做法?

[英]Splitting time and date in two separate date columns, in SQL server, is best practice?

在两个日期时间SQL列中拆分dateTime是最佳做法吗?

例如,2010-12-17 01:55:00.000分为两个列,

  • 一列包含日期部分的日期时间:2010-12-17 00:00:00.000
  • 一列包含时间部分的日期时间:1900-01-01 01:55:00.000

我被告知这是最好的做法,因为在某些时候SQL 2000不允许在约会时间? 并且甚至存在强制执行此操作的数据存储标准,并且一些公司已确保以这种方式存储所有数据以符合某些数据存储标准?

如果是这种情况,我肯定有人在这听说过,这听起来很熟悉吗?

在sql server 2008中,您有日期和时间数据类型,因此这成为一个非问题。 datetime总是允许时间甚至回到sql server 6和7

人们将其拆分的原因是因为1列中的所有内容都是一个查询,它返回任何一天下午3点到4点之间的所有订单需要扫描,时间列可以通过搜索完成(更快,更快)

从SQL 2005开始,我只会做一列。

如果您希望此信息为Sargable,我会使用计算列 这样您就可以查询日期或时间或两者,并且您的应用程序代码仅负责维护一列。

我知道这是旧的,但是你可能想要保持分开的另一个原因是用户输入(GenEric在评论中说这是用于时间管理)。 如果您允许用户将日期/时间作为单独的字段输入,并且您希望能够保存任何一个字段为空的数据,那么在数据库中有两个单独的可归零字段是很好的。 否则我猜你要么必须求助于某些日期值等于“空”的kludges,要么将额外的位字段添加为“no time / no date”标志。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM