如何解决MySQL日期时间字段的最接近匹配
| 我已经从数据库中的两个传感器获得了原始数据。为了从这些传感器计算出有意义的结果,我每个传感器都需要一个数据点。要注意的是,它们的时间戳不能保证完全匹配。我可以请求MySQL从一个传感器获取时间戳,并找到与另一个传感器最接近的时间戳,但是此请求需要针对每一行运行,然后每当添加新行时再次运行,我担心,只要插入一个数据点,就在表中进行搜索可能会成为性能负担,特别是如果添加了更多此类传感器。至少对于天真的算法而言,找到最接近的时间戳似乎是线性时间操作。这会导致性能问题,还是MySQL在这方面进行了优化?解决方法
您可以使用简单的查询来获取最接近给定值的结果:
SELECT `timestampcolumn`
FROM `thetable`
ORDER BY ABS(`timestampcolumn` - givenvalue)
LIMIT 1
如果您在右边的列上使用索引,则应该可以解决问题,并且不是非常耗费性能。 MySQL是用于这样的查询的。
,您可以使用MySQL函数制作遮罩来转换日语日期中的时间戳,例如20130109(yyyymmddhhmmsszzz),也可以使用PHP,java等通过代码进行转换;
在尝试使用SELECT查找行时,您可以执行以下操作:
SELECT * FROM TABLE WHERE ADATE BETWEEN(LEFT(BEGINDATE,8),LEFT(ENDDATE,8));
要么
SELECT * FROM TABLE WHERE ADATA < LEFT(MYDATE,8) LIMIT 1;
要么
在需要的地方使用野蛮的\“ _ \”,例如您希望更改日期的月份。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。