SQL SERVER 2000如何将bigint 转换成datetime,例如1289289881375

数字是我从数据库表格里拷贝出来的

我需要的结果是类似:1900-10-28 04:28:07.067

我已经搞定了,可以贴出来
select DATEADD(HOUR, DATEDIFF(HOUR,'19000101 00:00', '19700101 08:00'), CAST(1289289881375 / (1000.0*3600*24.0) AS DATETIME))

结果是:2010-11-09 16:04:41.373

第1个回答  2012-04-16
直接用CONVERT 或 CAST不行么?应该是可以的吧,都是8字节存储,看你需要记录什么了

两个 4 字节的整数内部存储 datetime 数据类型的值。 第一个 4 字节存储“基础日期”(即 1900 年 1 月 1 日)之前或之后的天数。基础日期是系统参照日期。另外一个 4 字节存储天的时间(以午夜后经过的毫秒数表示)。
smalldatetime 值存储为两个 2 字节的整数。第一个 2 字节存储 1900 年 1 月 1 日后的天数。另外一个 2 字节存储午夜后经过的分钟数。

果然不行,那么我想,你可以要的这个结果:
select dateadd(millisecond, cast(1289289881375 % 4294967296 as int),dateadd(day,cast(1289289881375 / 4294967296 as int),'1900-1-1'))

结果:1900-11-06 06:08:12.577
不过可能也不是实际的(你的数字是随便写的?)因为取模运算出来的作为日期和毫秒都不对。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网