Member 13746151 Ответов: 2

Проблема выбора максимальной или последней даты


Привет, я хочу показать некоторые детали, основанные на последней дате. Но у меня есть проблема с этим. Там говорят, что "оракул.Доступа к данным.Клиент.OracleException: ORA-00923: FROM ключевое слово не найдено там, где ожидалось"

Что я уже пробовал:

Ниже приведен запрос:

ВЫБЕРИТЕ РАЗЛИЧНЫЕ CCSMASTERLISTREVNO, CCSREVCONTENT, CCSPREPAREDREV,
CCSREVEFFECTIVEDATE

ИЗ CCS2_TBL_MASTERLIST

ГДЕ CCSEQUIPMENTDPMT = :DPMT

И CCSMASTERLISTREVNO <= :REVNO

И CCSREVEFFECTIVEDATE =

( Выберите MAX(TO_CHAR(CCSREVEFFECTIVEDATE,'dd/MM/yyyy'))

ИЗ CCS2_TBL_MASTERLIST )

ЗАКАЗ ОТ CCSMASTERLISTREVNO DESC;

2 Ответов

Рейтинг:
2

Richard MacCutchan

( SELECT MAX(TO_CHAR(CCSREVEFFECTIVEDATE,'dd/MM/yyyy'))<- extra ) here

FROM CCS2_TBL_MASTERLIST ) <- this is the end of the SELECT

У вас есть дополнительная закрывающая скобка в первой строке выше.

И почему вы конвертируете свои даты в символьные строки, чтобы найти максимальное значение?


Рейтинг:
2

OriginalGriff

Чтобы добавить к тому, что говорит Ричард: когда вы сравниваете даты как строки, вы используете сравнение строк. Это означает, что две строки исследуются символ за символом, и результат всего сравнения основан на первой найденной другой паре символов.
Что в вашем случае означает, что 11/01/2018 наступает до 12/01/1977 и после 01/01/2048

Вы должны хранить и сравнивать даты как даты, а не строки - или вы получите некоторые очень странные кажущиеся результаты.