2016-05-03 10 views
0

Dies ist OrientDb 2.1.4.SQL-Abfrage mit der Funktion date()

Die folgende Abfrage funktioniert gut:

wählen Sie aus SyncableHist wo history_date < = date ('2016.04.12 21.25.17', 'yyyy-MM-dd HH: mm: ss)

und gibt wie erwartet drei Datensätze zurück, und jeder Datensatz hat den Wert history_date = '2016-04-12 21:25:17'. Das history_date ist ein DATETIME-Typ.

Dies gilt jedoch nicht zurückgeben alle Datensätze:

wählen Sie aus SyncableHist wo history_date = date ('2016.04.12 21.25.17', 'yyyy-MM-dd HH: mm: ss')

Irgendwelche Ideen ???

Danke!

+0

Nicht mit Orientdb vertraut gemacht, sondern versuchen, zu werfen history_date wie 'wählen Sie aus SyncableHist wo Datum (history_date, yyyy-MM-dd HH: mm: ss") = date ('2016.04.12 21:25:17 ',' JJJJ-MM-TT HH: mm: ss ') '. –

+0

Leider ist das keine gültige Syntax in OrientDb. Danke trotzdem ... – Barbara

+0

Probieren Sie dieses aus: 'wählen Sie aus SyncableHist, wo history_date.format ('JJJJ-MM-TT HH: mm: ss') = '2016-04-12 21: 25: 17'' –

Antwort

1

Formatieren Sie Ihr Datum vor dem Vergleich in eine Zeichenfolge. Nicht sicher warum, aber wahrscheinlich haben Sie etwas extra wie Millisekunden oder Ihre Datenbank kann nicht auf diese Weise vergleichen.

select from SyncableHist where history_date.format('yyyy-MM-dd HH:mm:ss') = '2016-04-12 21:25:17'

+0

Allerdings erklärt es immer noch nicht, warum history_date <= Datum ('2016-04-12 21:25:17', 'JJJJ-MM-TT HH: mm: ss') funktioniert. Wenn ein Index für history_date vorhanden ist, wird er aufgrund von history_date.format() nicht von der Abfrage verwendet. – Barbara