猿问

关于SQLSERVER中的时间戳的问题

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.如何利用时间戳同步不同数据库某表之间的数据?

回首忆惘然
浏览 683回答 1
1回答

繁华开满天机

很简单,因为 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
随时随地看视频慕课网APP

相关分类

SQL Server
我要回答