2016-05-18 6 views
0

Ich habe eine Datumsspalte in mysql db aber die Daten sind wie so formatiert:mysql Datumsbereich Abfrage für bestimmte Datumsformat (MMM-JJ)

  • Jan-16
  • Feb-16
  • Mar-16

Ist es möglich, einen Datumsbereich mit diesem Datumsformat abzufragen?

Zum Beispiel:

$query = "SELECT `Total` FROM agent WHERE date >= 'Jan-16' AND date < Apr-16"; 

Wenn dies nicht gültig ist, was ist der empfohlene Weg vorwärts zu bewegen? Muss ich das Datumsformat in der Datenbank aktualisieren?

+1

wenn Sie früh in Ihrem Projekt sind; Ja, Sie sollten einen DATE- oder DATETIME-Typ verwenden. Es wird die Abfrage viel einfacher machen –

+0

Sie würden besser eine Spalte vom Typ "DATE" oder zumindest ein Format wie "YYYYMM" verwenden, das numerisch und/oder lexikografisch in derselben Reihenfolge wie die Monate sortiert. – eggyal

+2

'STR_TO_DATE (Datum, '% M-% d') ' – Akam

Antwort

1
  • Jan-16
  • Feb-16
  • Mar-16

Wenn diese Spalte char oder varchar oder anderer String-Typ ist, und Sie vergleichen nur diese zu Ihrem Parameter, wird es nicht geben, was Sie bewirken wollen, dass diese sie nur mit einem Zeichencode ASCII vergleichen. Sie sollten die Funktion str_to_date verwenden, um sie zu formatieren, dann können Sie das Ergebnis in einem Datumsintervall ermitteln.

Like this;)

$query = "SELECT `Total` FROM agent 
WHERE str_to_date(date, '%M-%y') >= str_to_date('Jan-16', '%M-%y') 
AND str_to_date(date, '%M-%y') < str_to_date('Apr-16', '%M-%y'); 

und wenn Ihr Parameter Datum ist, es einfach zu verwenden. Sie können Ihre Spalte auch aktualisieren, es wird eine bessere Lösung sein.

+0

Ich habe meine Datumswerte auf YYYY-MM-DD und den Spalten-Datentyp auf DATE und innerhalb der phpmyadmin-Konsole aktualisiert, wenn ich die folgende Abfrage ausführe, gebe die Ergebnisse korrekt zurück, aber if Ich führe die gleiche Frage von PHP aus es gibt nur Daten für das erste Datum zurück - irgendwelche Ideen ?? $ query = "SELECT' Beantwortet 'FROM' Vorname_Nachname' WO 'Datum' BETWEEN '2016-01-01' UND '2016-03-01'"; – user3436467

+0

@ user3435467 Haben Sie 'mysql_query' verwendet und das Ergebnis per Schleife in PHP abgerufen? – Blank

+0

ich benutze dies: '$ result = mysqli_query ($ conn, $ query) oder sterben (mysql_error());' '$ row = mysqli_fetch_array ($ ergebnis, MYSQLI_ASSOC);' – user3436467

Verwandte Themen