2013-09-30 201 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 

在数据库中,我有我的DD.MM.YYYY日期,但我想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

谢谢,这工作! –