2013-09-30 5 views
0

ребята. У меня есть запрос, который подсчитывает количество событий в один день. Но он возвращает дату в неправильном формате.Дата в правильном формате

select trunc(action_dt) as action_dt, count(*) as cnt 
from stat.jurnal_orders 
where action_dt between TO_DATE('17.05.12','DD/MM/YY') AND TO_DATE('12.11.13','DD/MM/YY') 
group by trunc(action_dt) 
order by action_dt asc 

В базе данных у меня есть дата в ДД.ММ.ГГГГ, но я хочу YYYY/MM/DD Может кто-нибудь помочь мне с этим запросом?

ответ

0

Пожалуйста, попробуйте TO_CHAR:

select TO_CHAR (sysdate, 'YYYY/MM/DD') from dual; 
1

у вас есть два варианта

Первый - явно установить формат, который вы хотите в запросе с помощью TO_CHAR

select to_char(trunc(action_dt),'yyyy/mm/dd') as action_dt, count(*) as cnt 
from stat.jurnal_orders 
where action_dt between TO_DATE('17.05.12','DD/MM/YY') AND TO_DATE('12.11.13','DD/MM/YY') 
group by to_char(trunc(action_dt),'yyyy/mm/dd') 
order by action_dt asc 

Во-вторых, установить nls_date_format на сессии уровень.

alter session set nls_date_format = 'yyyy/mm/dd'; 

и вы запрашиваете

select trunc(action_dt) as action_dt, count(*) as cnt 
    from stat.jurnal_orders 
    where action_dt between TO_DATE('2012/05/17') AND TO_DATE('2013/12/11') 
    group by trunc(action_dt) 
    order by action_dt asc 
1

Чтобы преобразовать даты в другой формат, вы можете использовать функцию Oracle TO_CHAR. http://www.techonthenet.com/oracle/functions/to_char.php

Для примера, если вы хотите Trunc дату первого, вы можете использовать его так:

SELECT TO_CHAR(TRUNC(action_dt), 'YYYY/MM/DD') as action_dt 
FROM some_table 
+0

спасибо, что работает! –

Смежные вопросы