日期:2014-05-19  浏览次数:20775 次

日期的问题
declare   @md   datetime
set   @md= '00:00:01 '
select   cast(@md   as   binary(8))

为什么结果是 "0x000000000000012C "?

------解决方案--------------------
不知道LZ希望得到什么样的结果

binary 是固定长度的二进制数据

0x000000000000012C 是二进制数值,他的长度实际上只有8

我的计算机基础知识不好,这个长度是怎么算的我也不懂
------解决方案--------------------
SQL Server联机帮助(SQL Server Books Online :BOL)的解释是 "DATETIME数据类型的值储存在2个4byte长度的整数中。 "
------解决方案--------------------
其实是这样的, 该值的确是储存在2个4byte长度的整型中,但是被打包成了BINARY(8)。前4个字节保存和19000101这个日期的 差值,我们知道SQL Server的基准日期是19000101。

后4个字节保存时间数据,该数据是以午夜开始的累积毫秒数。
------解决方案--------------------
还有一点就是精确度为1/300秒!
估计你明白怎么回事了吧!