2016-08-05 153 views
0

我在Oracle的數據庫中有一個日期表。當我運行一個查詢時,我得到的日期格式爲'01 -05-2015',但是當我在BIRT中運行一個類似的查詢時,我得到的日期格式爲'01 -MAY-2015 12:00 AM'。如何通過將日期字段的數據類型保留爲日期來以dd/mm/yyy格式獲取日期格式。Oracle中的日期格式 - 獲取某個範圍的日期

這裏是我的數據庫的示例。

EQ_DT 
05-07-2015 
06-06-2015 
15-02-2015 
19-09-2015 
28-12-2015 

也是我的查詢是:

select to_date(to_char(to_date(enquiry_dt,'DD/MM/YYYY'),'DD/MM/YY'),'DD/MM/YY') as q from xxcus.XXACL_SALES_ENQ_DATAMART where to_date(to_char(to_date(enquiry_dt,'DD/MM/YY'),'DD/MM/YY'),'DD/MM/YY')>'21-06-2012' order by q 

我越來越無效月的誤差也

+0

我認爲你應該尋求birt日期格式的解決方案.. sql和oracle不是這裏的問題.. – Plirkee

回答

1

如果enquiry_dt已經是一個日期列,爲什麼你想將其轉換爲日期(然後再char和日期再次)?

SELECT to_char(enquiry_dt, 'DD/MM/YYYY') AS q 
FROM xxcus.xxacl_sales_enq_datamart 
WHERE enquiry_dt > to_date('21-06-2012', 'dd-mm-yyyy') 
ORDER BY enquiry_dt 
0

在birt中,您將字段放置在報告上,將字段類型設置爲日期。然後在該字段的屬性中,轉到格式日期時間,最後指定該字段所需的日期格式。

0

我更喜歡總是使用傳遞日期參數作爲BIRT的字符串,使用已知的日期格式。這用於報告參數以及DataSet參數。

隨後,查詢裏面,我轉換爲日期是這樣的:

with params as 
(select to_date(pi_start_date_str, 'DD.MM.YYYY') as start_date_incl, 
     to_date(pi_end_date_str, 'DD.MM.YYYY') + 1 as end_date_excl 
    from dual 
) 
select whatever 
from my_table, params 
where (my_table.event_date >= params.start_date_incl 
     and 
     my_table.end_date < params.start_date_excl 
    ) 

這工作無關的一天的時間。 這樣,例如爲了選擇2016年1月的所有事件,我可以傳遞查詢參數'01 .01.2016'和'31 .01.2016'(我在這裏使用德語日期格式)。