Изо всех сил пытается производить запросы - PullRequest
0 голосов
/ 07 декабря 2018
Produce a list of films which have a date of release before August 2016.  

Здравствуйте, пытаюсь создать следующий SQL-запрос, описанный выше:

ВЫБРАТЬ * ИЗ ФИЛЬМА ГДЕ DATE_OF_RELEASE <'2016-08-01'; </p>

но я не могу понять, почему я получаю ошибки?


Пытаюсь ответить и на это: Написать оператор SQL для подсчета количества фильмов в базе данных, выпущенных до августа 2016 года.

SELECT COUNT (*) AS "Количество фильмов, выпущенных до августа 2016 года" ИЗ ФИЛЬМА;WHERE date_of_release <дата '2016-08-01'; </p>

однако получите эту ошибку:

Ошибка запуска в строке: 18 в команде - WHERE date_of_release

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Не делайте это неправильно - делайте это правильно .

Если тип данных столбца DATE_OF_RELEASE равен DATE (так и должно быть), сравните его сDATE, а не строка.'01-aug-16' или '2016-08-01' являются строками , а не датами.Не полагайтесь на Oracle и его возможности неявно преобразовывать их в даты, потому что рано или поздно он потерпит неудачу, как только изменятся настройки NLS.

Итак, используйте

where date_of_release < date '2016-08-01'   -- date literal

или

where date_of_release < to_date('01.08.2016', 'dd.mm.yyyy') -- TO_DATE function

Оставьте строки в покое.

0 голосов
/ 07 декабря 2018

Попробуйте это

SELECT * FROM FILM WHERE DATE_OF_RELEASE < '01-AUG-16';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...