2016-08-22 2 views
0

Drei wichtige Details.SQL CURRENT_DATE nicht sammeln Ergebnis erwarte ich

  1. ich diese direkt in phpMyAdmin über die SQL-Abfrage-Funktion tue

  2. Das ist Lauf Abfrage ist wie folgt:

    SELECT * FROM `leaderboard` 
    WHERE date > (CURRENT_DATE() - 30) 
    ORDER BY time DESC 
    
  3. Meine Daten sind wie folgt:

    id room team     time fte date 
    46 adod Old But Amazing   372 0 2016-07-04 15:13:56 
    40 adod The Inappropriates  315 0 2016-08-22 15:11:58 
    41 adod Chelsea Hens   254 0 2016-08-22 15:12:13 
    42 adod Serco-Top Of The Board 221 0 2016-08-22 15:12:44 
    43 adod Gradually Escaping  165 0 2016-08-22 15:13:05 
    44 adod The Lamb Marlborough 105 0 2016-08-22 15:13:29 
    45 adod Failure     0  1 2016-08-22 15:13:38 
    

Das sind alle Daten in meiner Tabelle, aber es ist auch die genaue Antwort, die ich erhalte, wenn ich diese Abfrage führe. Was mich verwirrt ist, dass das aktuelle Datum (2016-08-16) mindestens 40 Tage nach dem 2016-07-04 liegt. Warum wird ID 46 als gültiges Ergebnis durchgezogen?

Update: Auch eine Abfrage von

SELECT * FROM `leaderboard` 
    WHERE date > (CURRENT_DATE() - 20) 
    ORDER BY time DESC 

kehrt nicht ID 46

+0

SQL-Server oder MySQL? – Jens

+0

Was ist der Datentyp Ihrer Spalte "Datum"? –

+0

mysql Ich glaube, Entschuldigung, irreführendes Tag! – Stu

Antwort

3

Statt:

(CURRENT_DATE() - 30) 

Verwendung:

SUBDATE(CURRENT_DATE(), 30) 

Dies liegt daran, der erste Ausdruck das aktuelle Datum als Zahl im YYYYMMDD-Format verwendet, dh 20.160.822, und subtrahiert dann 30 von der , geben 20160792 und damit unerwartete Ergebnisse.

+0

Perfekt. Danke und Danke für die Erklärung! – Stu

1

DATE ein reserviertes Wort in MySQL ist, es auf das aktuelle Datum auswertet.

Also, Ihre WHERE Aussage ist konstant, könnte es auch WHERE 5 > 1 gewesen sein. Es wird immer alle Zeilen auswählen.

Versuchen Sie einen anderen Namen für diese Spalte.

+0

Ich habe gerade den Namen der Spalte auf "hinzugefügt" und versucht 20 und 30, die genau die gleichen Ergebnisse wie oben – Stu

+0

produziert, gut, es war einen Versuch wert. C -: = –

Verwandte Themen