go 时间精度问题导致匹配mongodb数据库数据失败

go的时间常量定义

const (
    Nanosecond  Duration = 1 //纳秒 纳秒是时间的最小单位,等于1秒的十亿分之一
    Microsecond          = 1000 * Nanosecond //微秒 相当于1000纳秒。微秒是时间的第二小单位,等于1秒的百万分之一
    Millisecond          = 1000 * Microsecond //毫秒 相当于1000微秒或者1000,000纳秒。毫秒是时间的第三小单位,等于1秒的千分之一
    Second               = 1000 * Millisecond //秒 相当于1000毫秒,秒是时间的基本单位,通常用于表示较短的时间间隔
    Minute               = 60 * Second //分钟级别的时间单位,定义为1分钟,相当于60秒
    Hour                 = 60 * Minute //小时级别的时间单位,定义为1小时,相当于60分钟或者3600秒
)

时间精度打印测试

// 创建一个时间
currentTime := time.Now()
fmt.Println(currentTime.String())
// 打印结果 默认精确到纳秒级别 Nanosecond
// 2024-02-29 15:01:06.457651 +0800 CST m=+0.002718601
    
// 将时间截断到秒级别
truncatedTime := currentTime.Truncate(time.Second)
fmt.Println(truncatedTime.String())
// 打印结果 精确到秒级别 Second
// 2024-02-29 15:01:06 +0800 CST

将time.Time格式字段存入mongodb数据库时 默认精度是纳秒级别

//数据库字段出现
2024-02-24 02:59:12.2
2024-02-24 07:31:12.000
//需要做时间字段匹配时 默认将时间格式化为Format("2006-01-02 15:04:05")秒级
导致问题就是 2024-02-24 02:59:12时间与2024-02-24 02:59:12.2时间不能匹配
//解决办法 time.Now().Truncate(time.Second)缩小时间精度
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容