0

我在 Oracle 的数据库中有一个日期表。当我运行查询时,我得到的日期格式为“01-05-2015”,但是当我在 BIRT 中运行类似的查询时,我得到的日期格式为“01-MAY-2015 12:00 AM”。如何通过将日期字段的数据类型保持为日期来获取 dd/mm/yyy 中的日期格式。

这是我的数据库示例。

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

我也收到 NOT A VALID Month 的错误

4

3 回答 3

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
于 2016-08-05T06:41:46.330 回答
0

我更喜欢始终使用已知日期格式将日期参数作为字符串传递给 BIRT。这适用于报告参数以及数据集参数。

然后,在查询中,我像这样转换为日期:

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”(我在这里使用德国日期格式)。

于 2016-08-08T07:32:08.707 回答
0

在 birt 中,您将字段放在报告上,将字段类型设置为日期。然后在该字段的属性中,转到格式化日期时间,最后为该字段指定所需的日期格式。

于 2016-08-06T00:40:21.630 回答