2014-11-20 2 views
0

У меня есть таблица SQLDeveloper со столбцом, который указывает дату.Функция поиска Oracle в таблице

В верхней части таблицы есть функция фильтра, и я хотел бы знать, как искать конкретную дату. Например: Что я пишу как команды SQL в фильтре для поиска даты «20141119» (формат «yyyymmdd»)

+0

Каков тип этой колонки? –

+0

Тип данных в этом столбце: VARCHAR2 – paul

+0

, что я пытаюсь сделать, просто использовать функцию фильтра для отображения всех результатов с датой «20141119» – paul

ответ

0

Если вы используете Oracle, вы можете использовать to_char() для преобразования значений. Вы должны быть осторожны, так как столбец Oracle date может также содержать компонент времени:

WHERE trunc(col) = to_date('201411119', 'YYYYMMDD') 

Тем не менее, лучше всего, чтобы избежать вызова функции по имени столбца - это затрудняет использование индексов. Итак, если вы знаете нет времени компонент, а затем использовать:

WHERE col = to_date('201411119', 'YYYYMMDD') 

Если вы не уверены на 100%, а затем использовать:

WHERE col >= to_date('201411119', 'YYYYMMDD') AND col < to_date('201411119', 'YYYYMMDD') + 1 

EDIT:

Если тип varchar2(), то, по-видимому, он находится в том же формате, что и вход. Вы можете сделать:

WHERE SUBSTR(SENDINGTIME, 1, 8) = '20141119' 

Если он имеет другой формат, то вы должны использовать to_date(), чтобы преобразовать его, как описано выше.

В общем, вы должны хранить даты и время, используя собственные форматы баз данных - в конце концов, именно поэтому они есть. Если вам нужно сохранить их как символ, то YYYYMMDD - хороший выбор формата.

+0

Я пробовал все ваши команды в фильтре, но не дал мне желаемого результата относительно «20141119». Я должен добавить, что столбец с датами помечен как «SENDINGTIME» – paul