Frage

Ich habe eine MySQL-Abfrage wie folgt aufgebaut:

SELECT time(c.start_time),
       time(c.end_time),
       time(c.end_time) - time(c.start_time) as 'opening_hours' 
FROM my_shop c;

Die Daten in Start- und Endzeit ist 1970-01-01 07.00.00 und 19.00.00 1970-01-01 ist.

Auf meinem lokalen Rechner diese diese Abfrage zurückgibt:

| 07:00:00 | 19:00:00 | 12 |

Allerdings auf einem entfernten Rechner (Produktion) es zurückkehrt

| 07:00:00 | 19:00:00 | 120000 |

Alle Ideen, warum dies passiert sein könnte und wie man es beheben?

Beide Sätze von Daten sind identisch und auch die besten meines Wissens sowohl MySQL-Installationen sind identisch.

Jede Hilfe ist sehr geschätzt.

Update:

Es scheint, dass die MySQL-Versionen sind etwas anders: 5.0.27-community-nt gegen 5.0.51b-community-nt. Dies ist wahrscheinlich der Grund, warum.

djt hat einen guten Punkt, dass Bills Lösung angehoben nimmt nicht berücksichtigt Minuten. Neben diesem djt Lösung nicht ganz, was ich brauche.

Also ich denke, die Frage ist, wie in morphed zweimal einschließlich Minuten subtrahieren, so dass:

1970-01-01 19:00:00 - 1970-01-01 07:00:00 = 12 
1970-01-01 19:00:00 - 1970-01-01 07:30:00 = 11.5
1970-01-01 19:00:00 - 1970-01-01 07:45:00 = 11.25

etc.

War es hilfreich?

Lösung

ich tun würde es so aus:

SELECT TIME(c.start_time),
       TIME(c.end_time),
       EXTRACT(HOUR FROM TIMEDIFF(TIME(c.end_time), TIME(c.start_time)))
         AS 'opening_hours' 
FROM my_shop c;

Andere Tipps

Normalerweise ist die gleichen Methoden unterschiedlichen Ausgang verursachen gibt den Eindruck, dass es entweder eine andere Server-Konfiguration oder Version. Ich bin nicht wirklich in der Lage dabei zu helfen, aber es kann versuchen, die unten Methode in Ihrer Abfrage wert sein statt:

SELECT TIME(c.start_time),
       TIME(c.end_time),
       TIMEDIFF(TIME(c.end_time), TIME(c.start_time)) as 'opening_hours'

FROM my_shop c;

Dies gibt Ihnen einen formatierten Zeitstempel der Öffnungszeiten, Minuten und Sekunden.

Gibt es eine bessere Lösung als diese:

SELECT EXTRACT(HOUR FROM TIMEDIFF(TIME(c.end_time), TIME(c.start_time))) 
+ ((EXTRACT(MINUTE FROM TIMEDIFF(TIME(c.end_time), TIME(c.start_time))))/60)
FROM my_shop c;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top