用一个uint64记录500年的每一秒和9亿多个ID

C 3月前 231

实现起来很简单。

uint64最大值是:18446744073709551615

将其缩小至:18000000000999999999

前面的 18000000000 用于记录时间,最多可记录 18000000000/3600/365/24 = 570 年中的每一秒。

后面的 999999999 用于记录ID,最多可记录 10亿-1 条内容。

这样可以在一些有序数据中实现时间戳和ID的组合查询。

 

最新回复 (2)
  • 皮卡秋 3月前
    2

    你这种说法,让我想起 excel 对日期的存储,就是1900-1-1年开始计数的 一个整数,(如24-9-13就是45548)

    相当于每一个 entry,就是通过绑定id 去对应出时间戳的

     

    不过,顺着 excel 的理解,去调用 python 的 datetime(1900,1,1).timestamp() 就会报错,因为python的 timestamp函数 限制年份在1970-2038,不然会OverflowError ,因为实际上调用的是 C语言的 localtime()

  • C 3月前
    3
    皮卡秋 你这种说法,让我想起 excel 对日期的存储,就是1900-1-1年开始计数的 一个整数,(如24-9-13就是45548) 相当于每一个 entry,就是通过绑定id 去对应出时间戳的 &am ...

    excel是 int32,4位的只能保存120多年,如果是有符号那只有60多年