2016-05-03 2 views
0

Это OrientDb 2.1.4.SQL-запрос с использованием функции date()

Следующий запрос работает отлично:

выбрать из SyncableHist, где history_date < = дата ('2016-04-12 21:25:17', 'YYYY-MM-дд чч: мм: сс')

и возвращает как ожидается три записи, и каждая запись имеет значение history_date = '2016-04-12 21:25:17'. History_date - тип DATETIME.

Однако это не возвращает никаких записей:

выбрать из SyncableHist, где history_date = дата ('2016-04-12 21:25:17', 'YYYY-MM-дд чч: мм: сс')

Любые идеи ???

Спасибо!

+0

не ознакомлен с orientDb, но попытаться бросить history_date как 'выбрать из SyncableHist где дата (history_date, 'YYYY-MM-дд чч: мм: сс') = дата ('2016-04-12 21:25:17 ',' yyyy-MM-dd HH: mm: ss ') '. –

+0

К сожалению, это недействительный синтаксис в OrientDb. Спасибо, все равно ... – Barbara

+0

Попробуйте следующее: 'выберите из SyncableHist, где history_date.format ('yyyy-MM-dd HH: mm: ss') = '2016-04-12 21: 25: 17'' –

ответ

1

Отформатируйте дату до строки перед сравнением. Не уверен, почему, но, вероятно, есть что-то дополнительное, например, миллисекунды, или ваша база данных не может сравнивать оба способа.

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

+0

Однако он все еще не объясняет, почему работает history_date <= date ('2016-04-12 21:25:17', 'yyyy-MM-dd HH: mm: ss'). Кроме того, если есть указатель на history_date, он не используется запросом из-за history_date.format(). – Barbara

Смежные вопросы