Выбрать все строки с указанной датой месяца - PullRequest
1 голос
/ 14 января 2012

У меня есть таблица с записями всех сделанных бронирований.Теперь даты начала и окончания хранятся в следующем формате в этой таблице:

Дата начала: ДД / ММ / ГГГГ, например, 20 января 2011 года для 20 января

Тот же формат для даты окончания бронирования.Теперь мне нужно предоставить календарь на месяц, например, nov, oct, jan без конкретных дат дня.Если какой-либо выбран, запросить базу данных для всех сохраненных дат в течение этого месяца и отобразить их в списке.

В настоящее время я использую java, так что подготовлено Statemetn и Statement.Есть идеи, как это можно сделать?самая большая проблема, с которой я сталкиваюсь, - это сопоставление и выбор даты из пользовательского ввода в формате, который у меня есть сейчас.PS Я использую Oracle SQL Спасибо и очень ценю.

Ответы [ 2 ]

3 голосов
/ 14 января 2012

Если тип вашего столбца DATE, то формат отсутствует. Однако, если это varchar2, вы сможете привести его к дате:

select to_date(start_date,'dd/mm/yyyy') from mytable;

Если вы хотите, чтобы все даты были в октябре 2011 года, вы можете использовать:

select * from mytable where trunc(start_date,'MM') = to_date('01/Oct/2011','dd/mm/yyyy');

(при условии, что start_date имеет тип DATE).

1 голос
/ 14 января 2012

Я бы использовал условие диапазона в столбце даты:

select * from mytable where start_date >= to_date('01/Oct/2011','dd/mm/yyyy') and start_date < to_date('01/Nov/2011','dd/mm/yyyy')

Используя trunc, планировщик оракулов должен иметь возможность выбирать индекс, однако здесь вы указываете диапазон для неизмененного значения.

Я предполагаю, что в роли Джона Дойла у вас есть формат DATE в вашей таблице. Если вы используете VARCHAR2, у вас возникают экстремальные проблемы с производительностью, потому что потребуется полное сканирование таблицы. Если хотя бы формат даты будет yyyy/mm/dd, то использование индекса будет возможно. Рассмотрите возможность изменения дизайна базы данных, чтобы избежать проблем с производительностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...