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

謝謝,這工作! –