数字是我从数据库表格里拷贝出来的
我需要的结果是类似: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
不过可能也不是实际的(你的数字是随便写的?)因为取模运算出来的作为日期和毫秒都不对。
两个 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
不过可能也不是实际的(你的数字是随便写的?)因为取模运算出来的作为日期和毫秒都不对。