在MySQL中,时间类型会被转换为time.Time类型的值来进行操作,但在比较这些值时需要注意。因为time.Time包含nanosecond级别的精度,因此即使两个时间值在人类感知上相等,它们可能仍然不相等。这可能导致比较操作始终返回false。
为了解决这个问题,我们可以使用Truncate函数将时间戳的精度降到秒级别,以避免微小的时间差异:
t1 := time.Now() //将t1的精度降到秒级别 t1 = t1.Truncate(time.Second)
//从MySQL中读取时间戳 t2 := time.Time{} //时间戳值 err := rows.Scan(&t2) if err != nil { //处理错误 }
//将t2的精度降到秒级别 t2 = t2.Truncate(time.Second)
//比较两个时间戳 if t1.After(t2) { //... } else if t1.Equal(t2) { //... } else { //... }