2016-06-30 14 views
0

Ich habe die folgende SQL, die alle Daten bis 6.30 Uhr morgen zurückgeben sollte. Eshat bis heute (30/6/2016) korrekt funktioniert.ORACLE 11g SQL-Datum Abfrage keine Daten für heute

SELECT TO_CHAR(TRUK.THEDATE,'DD/MM/YY HH24:MI') DAT 
FROM TRUK 
WHERE TO_CHAR(TRUK.THEDATE,'DD/MM/YY HH24:MI') <= TO_CHAR(TO_DATE(sysdate + 1) + 6.5/24,'DD/MM/YY HH24:MI') 
ORDER BY TRUK.THEDATE 

PROBLEM Heute werden die Daten zurückgegebenen Daten für 30. Juni nicht enthalten, was ich weiß, aber nur 1. Juli existiert. Wenn ich die Where-Klausel auskommentiere, werden alle Daten zurückgegeben, aber natürlich enthält dies Daten NACH 6.30 Uhr für den nächsten Tag, die ich nicht zurückgeben möchte.

Ich habe vergeblich nach einer Antwort gesucht und würde einige Hilfe mit diesem sehr schätzen. Wie kann die WHERE-Klausel anders geschrieben werden, um dies zu verhindern?

Mein gewünschtes Ergebnis ist, dass alle Datensätze in der Datenbank bis 6.30 am nächsten Tag zurückgegeben werden.

prost

Antwort

3

Du vergleichst Strings, aber Sie sollten den Vergleich Termine werden.

Passen Sie Ihre where-Klausel auf diese und es wird funktionieren:

WHERE truk.thedate <= trunc(sysdate) + to_dsinterval('1 06:30:00') 
+0

Perfect! Danke Rob, das hat funktioniert – Nick