2016-12-29 2 views
0

Ich muss einige Zeilen auswählen, wo das Datum heute oder höher ist und ich kann nur die Register auswählen, wo die Zeit zehn Minuten vor der aktuellen Zeit ist. Mein Zweifel ist, wie man das mit 'datetime' Typ macht. Da unten ist die Abfrage:So wählen Sie Zeilen basierend auf Datetime

SELECT 
    GROUP_CONCAT(timee.nome_time 
     ORDER BY timee.nome_time 
     SEPARATOR ' X ') AS nome_time, 
    partida.id, 
    DATE_FORMAT(partida.data_hora, '%d/%m/%Y %H:%i') AS data_hora, 
    partida.tb_cotacao_id 
FROM 
    tb_partida AS partida, 
    tb_time AS timee, 
    tb_partida_time AS partidaTime 
WHERE 
    (partida.id = tb_partida_id 
     && timee.id = tb_time_id) 
     AND (partida.flag_ativo = 1 
     AND partida.flag_cancelado <> 1 
     AND partida.flag_finalizado <> 1) 
     AND partida.tb_campeonato_id = 11 
GROUP BY partida.id 

ich wirklich jede Hilfe dankbar würde. Danke im Voraus.

+0

hinzufügen 'datum (partida.data_hora)> = datum (now())' in Ihrer where-Klausel? – GurV

+0

Siehe http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-very-simple-sql- Abfrage – Strawberry

Antwort

0

Verwenden Sie die TIME_TO_SEC(TIMEDIFF(now(),<datetime_field>), um den Zeitunterschied zu erhalten und in Sekunden zu konvertieren. Für mehr als 10 Minuten wird es so etwas wie dieses

SELECT ... FROM .. WHERE TIME_TO_SEC(TIMEDIFF(now() , tb_time)) > 600 ... 

EDIT

Um die Zeilen zu erhalten, die Zeit 10 Minuten mehr als aktuelle Zeit hat, umgekehrt nur die Parameter im TIMEDIFF. dh,

SELECT ... FROM .. WHERE TIME_TO_SEC(TIMEDIFF(tb_time, now())) > 600 ... 
+0

Wenn ich das in einer Zeile, die Datum 30. Dezember hat und die Zeit ist, zum Beispiel 1PM und die aktuelle Datetime ist 29. Dezember, 2PM das Register wäre nicht ausgewählt, richtig? –

+0

Die TIME_TO_SEC (TIMEDIFF (now(), tb_time)) konvertiert die Zeitdifferenz in Sekunden current_time - tb_time. Ihr Szenario wird einen Wert angeben, der nicht ausgewählt wird. –

+0

Ok, also, wenn ich TIME_TO_SEC verwende, wird nur die Zeit im Datetime-Typ konvertiert, oder? Ich denke ich habe es. Ich werde es versuchen und das Ergebnis sofort veröffentlichen. –

Verwandte Themen