Страницы

Поиск по вопросам

суббота, 14 декабря 2019 г.

Oracle выборка дат

#oracle


Есть поле DATE_CR в формате Date со значением типа 30.09.15.
Могу сделать выборку по конкретной дате

SELECT * FROM Table  where  to_date(DATE_CR,'dd.mm.yy') = to_date('30.09.15','dd.mm.yy');


Как сделать выборку только по годам, по месяцам и по дням?
    


Ответы

Ответ 1



попробуй это SELECT * FROM CLS_USER_LOG where to_date(DATE_CR,'dd.mm.yy') >= to_date('01.01.15','dd.mm.yy') and to_date(DATE_CR,'dd.mm.yy') <= to_date('31.12.15','dd.mm.yy');

Ответ 2



Чтобы из даты получить конкретное значение года, месяца, дня и т.п. можно использовать функцию extract, например: select extract(year from sysdate) from dual --вернет 2015 select extract(month from sysdate) from dual --вернет 9 select extract(day from sysdate) from dual --вернет 30 Тогда запрос будет иметь вид: select * from Table where extract(year from DATE_CR) = 2015 Так же можно использовать функцию trunc, например: select trunc(sysdate, 'yy') from dual --вернет 01.01.2015 select trunc(sysdate, 'mm') from dual --вернет 01.09.2015 Тогда запрос будет иметь вид: select * from Table where trunc(DATE_CR, 'yy') = date'2015-01-01'

Ответ 3



Если реально дата в формате Date, то можно совсем просто: SELECT * FROM Table where extract(year from DATE_CR) = 2015; Соответственно для месяца: SELECT * FROM Table where extract(year from DATE_CR) = 2015 and extract(month from DATE_CR) = 10; Ну или как было указано выше, делать trunc до необходимого показателя: --год SELECT * FROM Table where trunc(DATE_CR,'year') = to_date('01.01.2015','dd.mm.yyyy'); --месяц SELECT * FROM Table where trunc(DATE_CR,'month') = to_date('01.10.2015','dd.mm.yyyy'); --день SELECT * FROM Table where trunc(DATE_CR) = to_date('30.10.2015','dd.mm.yyyy');

Комментариев нет:

Отправить комментарий