Timestamdiff sql 不起作用

Timestamdiff sql doesn't work

我想创建一个 sql 查询来显示这些字段,并且数据库中存储的时间与当前时钟时间之间的差异大于 1 小时(60 分钟)。 这是我的查询,但有些地方运行不正常,查询显示数据库 table 中的所有字段。 我只想显示距离日期时间字段 time

超过一小时的那些

这是我的查询:

SELECT tipo, nombre, descripcion, lugar, duracion, formatoFecha
FROM servicio
WHERE ABS(TIMESTAMPDIFF(MINUTE, formatoFecha, NOW())) > 60
ORDER BY TIMESTAMPDIFF(MINUTE, formatoFecha, NOW()) DESC";

formato fecha 是一个日期时间字段,如下所示:

2017-04-10 17:30:00

我建议将查询写成:

SELECT tipo, nombre, descripcion, lugar, duracion, formatoFecha
FROM servicio
WHERE formatoFecho > NOW() + INTERVAL 1 HOUR OR
      formatoFecho < NOW() + INTERVAL 1 HOUR
ORDER BY formatoFecho DESC;

注意:如果您只想要未来的时间,请删除第二个条件(反之亦然)。

比较列时,应尽量避免对列调用函数(如果可以的话)。这允许优化器使用索引。