#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');
Комментариев нет:
Отправить комментарий