с помощью дб 10 г Oracle у меня есть таблица что-то вроде этого:
create table x(
ID NUMBER(10) primary key,
wedding DATE NOT NULL
);
как может я
select * from x where wedding is in june 2008???
Я знаю, что это - вероятно, легкое, но я не мог найти удовлетворяющий ответ до сих пор. Справка очень ценится.
Использование:
SELECT *
FROM x
WHERE x.wedding BETWEEN TO_DATE('2008-JUN-01', 'YYYY-MON-DD')
AND TO_DATE('2008-JUL-01', 'YYYY-MON-DD')
Использование to_date
создает дату с временной частью 00:00:00, которая требует даты окончания, чтобы быть на один день, если только вы не Хотите использовать логику, чтобы исправить текущую дату, чтобы быть на одну секунду до полуночи. Непроверенные:
TO_DATE('2008-JUN-30', 'YYYY-MON-DD') + 1 - (1/(24*60*60))
, которые следует добавить один день до 30 июня-2008, а затем вычтеть одну секунду, чтобы вернуть последнюю дату 30-июн-2008 23:59
.
Рекомендации:
Это ANSI SQL и поддерживается Oracle по состоянию на версии 9i
SELECT *
FROM x
WHERE EXTRACT(YEAR FROM wedding) = 2008
AND EXTRACT(MONTH FROM wedding) = 06
С Oracle Special to_char ()
:
SELECT *
FROM x
WHERE TO_CHAR(wedding, 'YYYY-MMM') = '2008-JUN'
(последние решения были поддержаны, когда динозавры все еще гуляли на землю)