关于SQLSERVER中的时间戳的问题
selectconvert(bigint,0x00000000E67E1518)aselectconvert(timestamp,3867022616)bselectco...
select convert(bigint, 0x00000000E67E1518) a
select convert(timestamp,3867022616) b
select convert(timestamp, convert(bigint, 0x00000000E67E1518)) c
1.为什么b!=c?
2.利用sqlserver中的convert函数进行,时间戳的二进制与其他数据类型(比如bigint、int)之间是如何转化的,convert函数如何将两种不同数据类型之间的值对应起来?
3.如何利用时间戳同步不同数据库某表之间的数据? 展开
select convert(timestamp,3867022616) b
select convert(timestamp, convert(bigint, 0x00000000E67E1518)) c
1.为什么b!=c?
2.利用sqlserver中的convert函数进行,时间戳的二进制与其他数据类型(比如bigint、int)之间是如何转化的,convert函数如何将两种不同数据类型之间的值对应起来?
3.如何利用时间戳同步不同数据库某表之间的数据? 展开
2个回答
展开全部
很简单,因为 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
sql server 规则无论你INT有多长,不超过38位,只要超过int的长度就会变成numeric。所以不会变成bigint,而timestamp是根据类型来的。不同数据类型就算值一样,转换成的时间戳就不一样,如果你想规避这个问题,你b就要改成select convert(timestamp,convert(bigint,3867022616)) b
更多追问追答
追问
有没有根据数据库某表里面的时间戳进行不同数据库之间某表数据同步更新(增删改)的经验,分享一下具体的做法。
追答
你要实现同步还是读写分离?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询