диапазон дат оракула

с помощью дб 10 г Oracle у меня есть таблица что-то вроде этого:

 create table x(
 ID NUMBER(10) primary key,
 wedding DATE NOT NULL
 );

как может я

 select * from x where wedding is in june 2008???

Я знаю, что это - вероятно, легкое, но я не мог найти удовлетворяющий ответ до сих пор. Справка очень ценится.

11
задан OMG Ponies 4 March 2010 в 05:13
поделиться

2 ответа

Использование:

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 .

Рекомендации:

21
ответ дан 3 December 2019 в 04:52
поделиться

Это 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'

(последние решения были поддержаны, когда динозавры все еще гуляли на землю)

2
ответ дан 3 December 2019 в 04:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: