您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在Go中的mongodb驱动程序中进行比较以及可能以其他语言和其他数据库进行比较时的时间精度问题

在Go中的mongodb驱动程序中进行比较以及可能以其他语言和其他数据库进行比较时的时间精度问题

BSON中的时间以自Unix纪元(spec)以来的UTC毫秒表示。Go中的时间值具有纳秒级精度。

为了往返时间,通过BSON编组的时间值,请使用自Unix时代以来截断为毫秒的时间:

func truncate(t time.Time) time.Time {
    return time.Unix(0, t.UnixNano()/1e6*1e6)
}

...

u := user{
    Username:          "test_bson_username",
    Password:          "1234",
    UserAccessibility: "normal",
    RegisterationTime: truncate(time.Now()), 
}

您还可以使用Time.Truncate方法

u := user{
    Username:          "test_bson_username",
    Password:          "1234",
    UserAccessibility: "normal",
    RegisterationTime:  time.Now().Truncate(time.Milliseconds),
}

这种方法依赖于Unix纪元和Go零时间相差整数毫秒的事实。

mongodb 2022/1/1 18:16:38 有666人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶