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

Mon*_*RPG 1 sql-server datetime date bigint sql-server-2008-r2

好的,现在让我举个例子

日期: 15.12.2012 00:16:39

现在这将存储为

20121215001639
Run Code Online (Sandbox Code Playgroud)

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

我可以这样做

where date<20121215001639+1800 
Run Code Online (Sandbox Code Playgroud)

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

Cri*_*scu 10

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

我创建了两个表,一个是datetime列,另一个是bigint列,表示相同的数据.

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

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

但是,该bigint方法存在明显的缺点; 他们中有一些:

  • 转换为/来自bigint需要写入更多代码
  • 按月过滤等操作需要更复杂/更少可读的查询
  • 查看Management Studio中的结果网格,如果看到分隔的日期部分,则无法尽快"解析"/解释结果.

  • 谢谢,在阅读本文并思考所有问题之前,我正要走上这条糟糕的道路.我想使用bigint,因为这样可以支持0000到9999之间的日期,所以更大的范围,以及毫秒到时间,并且仍然给我一些额外的位来解决诸如"没有约会"或"没有时间"之类的事情(即 - 可以将"小时"设置为"25"以表示"没时间").经过深思熟虑,不值得为小额储蓄额外工作. (2认同)