2017-04-11 64 views
0

我想做一個sql查詢,顯示我這些字段和存儲在數據庫中的時間和當前時鐘時間之間的差異大於1小時(60分鐘)。 這是我的查詢,但有些工作不正常,查詢顯示數據庫表中的所有字段。 我想只顯示那些從日期時間字段時間Timestamdiff sql不起作用

一個多小時這是我的查詢:

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

formato出生日期是一個日期時間字段,因爲這:

2017 -04-10 17:30:00

+1

「不工作」是什麼意思? –

+0

對不起,我將更好地解釋它,當我執行查詢時,我獲得了與查詢相同的結果:SELECT tipo,nombre,descripcion,lugar,duracion,formatoFecha FROM servicio,因此我說「不工作「,我將編輯帖子 – wiki

回答

2

我建議將查詢寫爲:

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; 

注意:如果您只需要將來時間,請刪除第二個條件(反之亦然)。

比較列時,應儘量避免對列進行函數調用(如果可以的話)。這允許優化器使用索引。

+0

非常感謝您的回答,這是一個很好的解決方案,它工作得非常好 – wiki