Bigtable 中使用的自定义时间戳类型是 int64 类型的 microseconds。由于 int64 类型的数据最大值为 9223372036854775807 (即 2 的 63 次方 - 1),因此自定义时间戳的最大有效值为 9223372036854775807 微秒。
代码示例:
import datetime
def to_bigtable_timestamp(dt): epoch = datetime.datetime.utcfromtimestamp(0) delta = dt - epoch return int(delta.total_seconds() * 1000000)
def from_bigtable_timestamp(mi): seconds = mi // 1000000 micros = mi % 1000000 dt = datetime.datetime.utcfromtimestamp(seconds) return dt + datetime.timedelta(microseconds=micros)
dt = datetime.datetime(2020, 12, 31, 23, 59, 59, 999999) ts = to_bigtable_timestamp(dt) print(ts) # 输出:1609449599999999
dt = from_bigtable_timestamp(ts) print(dt) # 输出:2020-12-31 23:59:59.999999