2016-06-01 10 views
0

Wir versuchen, die Länge einer körperlichen Übung zu erhalten, indem Sie die Zeitstempel auf unseren Sensordaten verwenden.MySQL Die Rückkehr einer Subtraktion

Aktuell haben wir die folgende Abfrage:

SELECT UNIX_TIMESTAMP(
    SELECT HAAS2.trainingsdata.timestamp 
    FROM HAAS2.trainingdata 
    WHERE HAAS2.trainingsdata.training_id= 1 
    ORDER BY timestamp DESC LIMIT 1) 
- UNIX_TIMESTAMP(
    SELECT HAAS2.trainingsdata.timestamp 
    FROM HAAS2.trainingdata 
    WHERE HAAS2.trainingsdata.training_id= 1 
    ORDER BY timestamp ASC LIMIT 1) 
AS output 

(tritt zur besseren Lesbarkeit hinzugefügt)

Bei der Prüfung dieser Abfrage in phpMyAdmin wir die folgende Fehlermeldung erhalten:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT HAAS2.trainingsdata.timestamp FROM HAAS2.trainingdata WHERE HAAS2.trainin' at line 1

Wir haben verschiedene Möglichkeiten ausprobiert, um die Abfrage aufzuschreiben, was zu dem gleichen Fehler führt. Wir verstehen nicht, wo der Syntaxfehler liegt.

+1

Obwohl Sie in der Tat besser dran sind mit einer anderen Abfrage * (die Antwort unten) *, gibt es eine direkte Antwort auf Ihre ausdrückliche Frage; Die Unterabfragen müssen in ihren eigenen Klammern stehen. 'SELECT UNIX_TIMESTAMP (()) - UNIX_TIMESTAMP (()) AS-Ausgabe Die Klammern, die Sie hatten, waren nur für den Funktionsaufruf' UNIX_TIMESTAMP() ', Sie brauchten auch die um die Unterabfrage. – MatBailie

Antwort

3
SELECT max(UNIX_TIMESTAMP(timestamp)) - 
     min(UNIX_TIMESTAMP(timestamp)) AS output 
FROM HAAS2.trainingdata 
WHERE training_id = 1