select convert(bigint, 0x00000000E67E1518) aselect convert(timestamp,3867022616) bselect convert(timestamp, convert(bigint, 0x00000000E67E1518)) c1.为什么b!=c?2.利用sqlserver中的convert函数进行,时间戳的二进制与其他数据类型(比如bigint、int)之间是如何转化的,convert函数如何将两种不同数据类型之间的值对应起来?3.如何利用时间戳同步不同数据库某表之间的数据?
1 回答
繁华开满天机
TA贡献1816条经验 获得超4个赞
很简单,因为 b的类型不是bigint 而是numeric(10,0) 也就是说,convert(timestamp,3867022616) =convert(timestamp,convert(numeric(10,0),3867022616))
sql server 规则无论你INT有多长,不超过38位,只要超过int的长度就会变成numeric。所以不会变成bigint,而timestamp是根据类型来的。不同数据类型就算值一样,转换成的时间戳就不一样,如果你想规避这个问题,你b就要改成select convert(timestamp,convert(bigint,3867022616)) b
- 1 回答
- 0 关注
- 682 浏览
添加回答
举报
0/150
提交
取消