我有一套Longs
(实际为Timestamps
)。显然,他们无法在不丢失数据的情况下投放到Integers
,因为timestamp
不适合Integer
范围。我需要根据这些Integer
生成Longs
类型的主键。有没有办法做到这一点?
答案 0 :(得分:2)
由于Long
s比Integer
更多,因此没有安全的方法可以对所有Long
s进行操作。
但是,如果Long
不是太远,您可以将第一个时间戳用作0,广告然后只需使用差异为每个后续时间戳获取唯一Integer
。 / p>
答案 1 :(得分:1)
有很多方法,但你真的认为基于时间戳的主键是个好主意吗?有几个具有相同时间戳的条目并不难,所以它不会是一个非常好的密钥。
无论如何,既然你使用的是java,我猜你的时间戳是以毫秒为单位的。将它截断为秒是非常糟糕的想法(在同一秒内很容易与其他条目发生冲突)可能好主意是“移位”时间戳:从时间戳中选择最小日期并使其为零时间戳,其他相对于它:在这种情况下,你可能会适合整数。
答案 2 :(得分:1)
假设创建日期时间戳的范围有限。让我们说2004年12月12日之后的日期。似乎是一种截断最高有效数字的合理方法,例如
long 00001357288262
int 1357288262