2017-06-05 3 views
0

Ich habe Zimmer-Steckplatz zur Verfügung von ‚2017.06.13 00.00.00‘ auf ‚2017.06.13 23.00.00‘SQL-Abfrage mit Datumzeit und BETWEEN-Klausel

Ich lief zwei Abfragen:

1.

SELECT * FROM hs_room_slots_tbl 
WHERE hs_room_slots_tbl.from BETWEEN '2017-06-12 22:00:00' AND '2017-06-13 21:00:00' 
    OR hs_room_slots_tbl.to BETWEEN '2017-06-13 02:00:00' AND '2017-06-14 01:00:00' 

2.

SELECT * FROM hs_room_slots_tbl 
WHERE hs_room_slots_tbl.from BETWEEN '2017-06-13 03:00:00' AND '2017-06-13 08:00:00' 
    OR hs_room_slots_tbl.to BETWEEN '2017-06-13 07:00:00' AND '2017-06-13 12:00:00' 

erste Abfrage holt den Schlitz und zweite soll den Schlitz rechts holen? Ich verstehe nicht, warum die zweite Abfrage das Ergebnis nicht abruft.

Edit: Dies ist der Rekord enter image description here

+0

holen müssen, aber haben Sie die Daten in diesem Bereich? –

+0

@MichaelO Ja, der Steckplatz ist dort mit Daten in diesem Bereich – coderSree

+0

Können Sie ein Beispiel der Daten in hs_room_slots_tbl.from und hs_room_slots_tbl.to anzeigen, die Sie voraussichtlich übereinstimmen? –

Antwort

0

Da in der zweiten Abfrage, um Ihr Bedarf die from in Reichweite zu sein:

BETWEEN '2017-06-13 03:00:00' AND '2017-06-13 08:00:00' 

und es ist 2017.06.13 00.00.00 , so dass ihr nicht in den Bereich (die Daten in Stunden 0 und Sie müssen es mehr als 3), so dass es nicht das gleiche mit dem to, müssen Sie es

BETWEEN '2017-06-13 07:00:00' AND '2017-06-13 12:00:00' 
überein 210

und Sie haben es bei 23 ('2017-06-13 23:00:00'), dass es nicht in der Reichweite ist. Die Daten 23 ist, und der Bereich ist es von 07-12

So die zweite Abfrage funktioniert richtig, es doesn die Daten