关于SQLSERVER中的时间戳的问题

2025-02-24 01:29:27
推荐回答(2个)
回答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

回答2:

回答第一个问题,因为数字默认不是bigint类型的,如果你加上convert(bigint,3867022616)就一样了