【问题标题】:Most efficient way to store only the date?仅存储日期的最有效方法?
【发布时间】:2012-04-24 15:35:40
【问题描述】:

DateTime 精确到百分之三秒。 SmallDateTime 是 精确到一分钟。

如果您只需要精确到一天怎么办?这里的最佳做法是什么?我意识到 DateTime 是 8 个字节,而 SmallDateTime 只有 4 个;但我只是想知道是否有比创建 SmallDateTime 列并在其中保存 SmallDateTime.Date 更好或更合适的方法来仅存储日期值?

每一点都有帮助! :)

【问题讨论】:

  • 你的 SQL Server 版本是...?
  • 您在 SQL 2008 中看到过 Date (only) 类型吗? 3 字节 msdn.microsoft.com/en-us/library/bb630352(v=sql.100).aspx
  • 你在什么环境下开发会明显受到几个字节的影响?
  • 问问自己是否真的需要做这个优化? YAGNI
  • 正如@nonnb 所说,您应该使用DATE 数据类型然后

标签: performance sql-server-2008 datetime smalldatetime


【解决方案1】:

这取决于您运行的 SQL Server 版本。

  • 2008+:日期
  • 2008-: SmallDateTime

虽然,如果您查看documentation for smalldatetime,它们使用两字节整数作为日期,使用两字节整数作为时间,因此您可能会复制它们的行为并只存储一个两字节整数 (smallint) 和然后使用 DateAdd 添加自 1900/1/1 以来的天数,如果大小在这种情况下 真的那么重要。

【讨论】:

    【解决方案2】:

    使用 3 字节的日期。见Date data type

    【讨论】:

      猜你喜欢
      • 2017-03-24
      • 1970-01-01
      • 2021-11-03
      • 2016-03-11
      • 1970-01-01
      • 2013-03-17
      • 2017-01-28
      • 2010-10-05
      • 2011-04-16
      相关资源
      最近更新 更多