2016-10-19 3 views
1

Ich möchte Verkaufsdaten zwischen den beiden Daten auf, aber es funktioniert nicht korrekt SQL-Abfrage.SQL Where Date Bedingung

saledate column

if($_GET['startdate']) 
    { 
    $startdate = date('Y-m-d H:i:s', strtotime($_GET['startdate'])); 
    } 
    else 
    { 
    $startdate = 'NOW()'; 
    } 
    if($_GET['enddate']) 
    { 
    $enddate = date('Y-m-d H:i:s', strtotime($_GET['enddate'])); 
    } 
    else 
    { 
    $enddate = date('Y-m-d H:i:s', strtotime('-1 month')); 
    } 
    $db->setTrace('true'); 

    $sales = $db->rawQuery('SELECT * from sales where (saledate BETWEEN ? AND ?) AND deletestat = ?', [$startdate, $enddate, '0']); 
    print_r($db->trace); 

Ich verwende joshcam/mySQLi Klasse für SQL-Abfragen.

Wie erhalten Daten zwischen den beiden Daten?

+0

A) Welche Ergebnisse erhalten Sie? B) Was ist das Problem? Sie sagen nicht, was "richtig arbeiten" bedeutet oder gar nicht funktioniert. – tadman

+0

speziell erklären, erhalten Sie auf Fehler oder falsches Ergebnis? – Jagrati

+0

@ Jagrati Ich bekomme nicht den Fehler oder falsches Ergebnis. Abfrageergebnis gibt null zurück. –

Antwort

1

Die mysql zwischen Funktion funktioniert anders als Sie erwarten.

Die between-Funktion erwartet, dass der erste Parameter der min-Wert und der zweite Parameter der max-Wert ist. Lesen Sie die Dokumentation: http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#operator_between

Wenn Sie diese Zeile:

$sales = $db->rawQuery('SELECT * from sales where (saledate BETWEEN ? AND ?) AND deletestat = ?', [$startdate, $enddate, '0']); 

Um dies:

$sales = $db->rawQuery('SELECT * from sales where (saledate BETWEEN ? AND ?) AND deletestat = ?', [$enddate, $startdate, '0']); 

als es funktionieren wird.

+0

Es hat nicht funktioniert. Ergebnis verfolgen; 'SELECT identityno, Name, Verkaufspreis, Restpreis, Provision, Comissier, Gewinn, Saledate, Typ aus dem Verkauf wo (saldate BETWEEN '2016-09-10 00:00:00' UND '2016-08-10 00:00:00') UND deletestat = '0'', aber keine Daten zwischen dem Datum erhalten –

+0

Wie Sie sehen können, ist der Min- und Max-Wert falsch. Du solltest das wechseln. Ich denke, das Problem ist, Sie haben - 1 Monat, wenn es kein Datum gibt. Aber wenn Sie ein Datum hinzufügen, können Sie vielleicht ein Datum in der Zukunft haben. – Perry

+0

Es gibt Daten bis zum 18/09/2016, aber keine Daten –

Verwandte Themen