在SQL Server上将日期存储为BigInt - 这是一个好主意吗?

时间:2012-12-16 14:05:19

标签: sql-server date datetime sql-server-2008-r2 bigint

好的,现在让我举个例子

日期:15.12.2012 00:16:39

现在这将存储为

20121215001639

现在例如,如果我想要检索超过30分钟(30 * 60 = 1800秒)的行

我可以这样做

where date<20121215001639+1800 

那么这是一种表演方式而不是存储日期时间吗?

1 个答案:

答案 0 :(得分:10)

我完全同意上面关于marc_s的评论,但我决定进行测试,只是为了好玩。

我创建了两个表,一个包含datetime列,另一个包含bigint列,表示相同的数据。

这是sql小提琴:http://www.sqlfiddle.com/#!3/74976/3

我已经为500,1000和5000条记录运行此查询,并且每次都注意到执行计划是相同的,因此从性能的角度来看,使用bigint没有任何好处

然而,bigint方法存在明显的缺点;其中一些:

  • 转换为bigint或从{{1}}转换需要编写更多代码
  • 按月过滤等操作需要更复杂/更不易读的查询
  • 查看Management Studio中的结果网格,如果您看到分开的日期部分,则无法尽快解析&#34; /解释结果。