Mysql时间格式Y-m-d H:i:s未按预期工作

Mysql时间格式Y-m-d H:i:s未按预期工作,mysql,Mysql,我有一个带有时间戳字段的mysql表ts,它将在以下计算后插入数据: 从我得到的数据来源: $date=$ts[$s]['datetime'];//2018-06-03T07:00:00.000Z $timestamp=dateY-m-d H:i:s,strotime$date;//2018-06-03 07:00:00 每10分钟$timestamp和其他数据将插入mysql表ts php程序应该选择最后6个条目。我试过了 SELECT * FROM ts WHERE (now() - t_t

我有一个带有时间戳字段的mysql表ts,它将在以下计算后插入数据:

从我得到的数据来源: $date=$ts[$s]['datetime'];//2018-06-03T07:00:00.000Z $timestamp=dateY-m-d H:i:s,strotime$date;//2018-06-03 07:00:00

每10分钟$timestamp和其他数据将插入mysql表ts

php程序应该选择最后6个条目。我试过了

SELECT * FROM ts WHERE (now() - t_timestamp)<3600000 ORDER BY t_timestamp ASC;
如果我尝试不同的毫秒值,比如3600000,1800000,600000。。。提供表的所有数据,而不仅仅是预期的最后6、3、1行。 但是81000给了我最后一行, 82000给了我最后两行, 83000给了我最后3排, 84000给了我最后4行, 85000给了我最后5行

那是在小时之前,现在又开始了: 81000给了我最后一排, 82000给了我最后两行,

它似乎只显示最后一个小时的1、2、3、4、5、6行

我尝试了另一种方法,它给了我零行: 从ts中选择*其中t_timestamp>=日期_SUBNOW,间隔1小时,按t_timestamp ASC排序


我做错了什么?

只是一个提示:选择now-t_timestamp FROM ts ORDER BY t_timestamp DESC limit 6;您确定看到了以毫秒为单位的差异吗?为了清楚起见,您可能需要添加descripe ts.LIMIT 6的输出。实际上,该列表最多有6行,但不是一个小时。另一个建议是通过t_timestamp DESC limit 6从ts ORDER中选择now-t_timestamp;有趣的是,它吐出的时间戳是80450的6倍。有些事情我不明白,但根据我的观察,81000列一行,82000列两行。。。。这可能是有意义的。我建议限制6只用于测试,以查看差异列表。另一个建议是告诉更多关于表结构的信息,主要是ts列的类型和mysql版本导致now-sometype的行为可能不同。mysql版本14.14发行版5.7.22,对于Linux x86_64,使用EditLine包装器,字段t|u timestamp是数据类型timestamp