首页 > 解决方案 > MYSQL DATETIME 列上的条件未按预期工作

问题描述

我对 MySQL 没有太多经验,所以不确定是 MySQL 还是我的代码有问题。

我有一个表可以说它data有一个created_atDATETIME 类型的列。该表每秒获得 20-30 条新记录,根本没有更新。

我有一个每 15 分钟运行一次的 Cron 作业,并尝试获取过去 15 分钟内创建的所有记录。

如果它在上午 10:15:06 运行并且最后一次运行是在 10:00:03,它会进行以下查询:

SELECT * FROM `data`  WHERE (created_at >= '2021-07-30T10:00:03Z' AND created_at < '2021-07-30T10:15:06Z')

当前时间不包括在内,因此created_at < current_time.

但问题是,有时我会收到重复数据错误。也就是说,它包含来自 current_time 的一些数据行,这些数据行应该被排除在外。

就像在这种情况下,如果在 10:15:06 插入了 15 条记录,则查询结果中可能包含 4-5 条记录。但它并非每次都发生。

我正在使用 Golang,目前,我使用time.Now(). 这可能是因为毫秒还是其他原因?我不会进行超过 1 个数据库查询,所以我认为如果我有额外的记录,它必须对 DB 做一些事情。

标签: mysql

解决方案


推荐阅读