2016-07-22 15 views
-1

Ich habe Tabellenmaterial:Mysql Zwischen Datum

  • id: int
  • Titel: Text
  • date_operation: Datum

Und ich habe diese Daten:

1, title1, 2016-06-02 
    2, title2, 2016-06-02 
    3, title3, 2016-06-03 
    4, title4, 2016-06-03 
    5, title6, 2016-06-03 
    6, title7, 2016-06-05 
    7, title8, 2016-06-05 
    8, title9, 2016-06-06 
    9, title10, 2016-06-06 
    10, title11, 2016-06-06 
    11, title11, 2016-06-07 
    12, title12, 2016-06-08 

Ich würde alle Materialien datalyoperation zwischen 2016.06.02 UND 2016.06.06:

Ich versuche, mit diesem:

SELECT * FROM `material` WHERE date_operation = '2016-06-02' AND '2016-06-06' 

Aber zeigen Sie mir dieses Ergebnis:

1, title1, 2016-06-02 
2, title2, 2016-06-02 
3, title3, 2016-06-03 
4, title4, 2016-06-03 
5, title6, 2016-06-03 
6, title7, 2016-06-05 
7, title8, 2016-06-05 

Ich möchte Siehe dieses Ergebnis:

1, title1, 2016-06-02 
2, title2, 2016-06-02 
3, title3, 2016-06-03 
4, title4, 2016-06-03 
5, title6, 2016-06-03 
6, title7, 2016-06-05 
7, title8, 2016-06-05 
8, title9, 2016-06-06 
9, title10, 2016-06-06 
10, title11, 2016-06-06 

Antwort

5

Versuchen Sie, diese diese

SELECT * 
FROM `material` 
WHERE (date_operation BETWEEN '2016-06-02' AND '2016-06-06') 
+1

(1) Was genau tun die Klammern? (2) Wie wird der zweite Wert interpretiert? Ich sehe dies nicht als Lösung des OP-Problems, daher ist eine zusätzliche Erklärung hilfreich. –

0

Versuchen:

SELECT * FROM `material` WHERE date_operation BETWEEN '2016-06-02 00:00:00' AND '2016-06-06 23:59:59' 
0

TryThis

SELECT * FROM `material` WHERE date_operation >= '2016-06-02' AND date_operation <='2016-06-06' 
0

Sie könnten eine Zeitkomponente auf dem "Datum" Wert haben. BETWEEN ist gefährlich mit Daten. Ich würde empfehlen:

SELECT * 
FROM `material` 
WHERE date_operation >= '2016-06-02' AND date_operation < '2016-06-07'; 

Dies wird unabhängig davon arbeiten, ob der Wert eine Zeitkomponente hat oder nicht.

Sie könnten auch die date() Funktion verwenden (mit between sogar), aber das kann die Verwendung von Indizes behindern.

0

Die beste Möglichkeit, ternäre Operatoren zu verwenden, um sql schnell auszuführen. Versuchen Sie diese SELECT * FROM material WHERE date_operation >= '2016-06-02' AND date_operation <= '2016-06-06';