2014-11-25 3 views
0

так и для какой-то причине Oracle SQL не нравится:Oracle SQL - ORA-00936 на DATE()

select count(DEPARTURE_DATE) as DEPARTURES_THIS_MONTH 
from DEPARTURE_DATES 
where to_char(DEPARTURE_DATES.DEPARTURE_DATE, 'MMYYYY') = to_char(date('2014-10-11 00:00:00'), 'MMYYYY') 

Может кто-нибудь увидеть, что проблема с этим? Я провел 30 минут, глядя на это и не может понять, что его на о ...

ORA-00936: missing expression 

ответ

3

date не является функцией в Oracle, так to_char(date('2014-10-11 00:00:00'), 'MMYYYY') ничего не значит.

Однако существует to_date function, который работает как обратный to_char.

Вместо date('2014-10-11 00:00:00'), что-то, как это должно работать:

TO_DATE('2014-10-11 00:00:00', 'YYYY-MM-DD HH24:MI:SS') 
+1

похоже, что он использовал это в качестве ссылки (1-й результат Google для 'oracle date()'), который, несмотря на URL-адрес, фактически является ссылкой mysql https://docs.oracle.com/cd/E17952_01/refman -5.1-ru/date-and-time-functions.html # function_date – nvuono

+0

Спасибо, человек! - Оно работает. Я также руководствовался этой ссылкой https://docs.oracle.com/cd/E17952_01/refman-5.1-en/date-and-time-functions.html#function_date – Bart

+1

@Bart: эта ссылка является * * MySQL **, а не руководство Oracle DBMS. –

1

Там нет date функции в Oracle, хотя есть to_date()

Вы, вероятно, хотите это:

select count(DEPARTURE_DATE) as DEPARTURES_THIS_MONTH 
from DEPARTURE_DATES 
where to_char(DEPARTURE_DATES.DEPARTURE_DATE, 'MMDDYYYY') = '11102014'; 

Там не имеет смысла в преобразовании строки в Date, а затем обратно в String. Часть «DD» в маске формата была пропущена, вы, вероятно, тоже этого захотите.