Domanda

Ho una domanda MySQL strutturato come segue:

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

I dati di inizio e fine il tempo è rispettivamente 1970-01-01 07:00:00 e 1970-01-01 19:00:00.

Sulla mia macchina locale presente questa query restituisce:

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

Tuttavia in un computer remoto (produzione) sta tornando

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

Tutte le idee sul perché questo potrebbe accadere e come risolvere il problema?

Entrambe le serie di dati sono identici e troppo il meglio delle mie conoscenze entrambe le installazioni di MySQL sono identici.

Ogni aiuto è molto apprezzato.

Aggiornamento:

Sembrerebbe che le versioni di MySQL sono leggermente diverse: 5.0.27-community-nt contro 5.0.51b-community-nt. Questo è probabilmente il motivo per cui.

DJT ha sollevato un buon punto di soluzione che Bill non tiene conto minuti. Così come la soluzione di questo DJT non è proprio quello che mi serve.

Quindi credo che la questione si è trasformato in modo da sottrarre due volte compreso minuti in modo tale che:

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

ecc.

È stato utile?

Soluzione

Lo farei in questo modo:

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;

Altri suggerimenti

Di solito gli stessi metodi che causano output diverso dà l'impressione che si tratta di una configurazione server diverso o versione. Io non sono davvero in grado di aiutare in questo, ma può valere la pena provare il metodo seguito nella query invece:

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;

Questo vi darà un timestamp formattato dell'apertura ore, minuti e secondi.

C'è una soluzione migliore di questo:

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;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top