2016-08-05 34 views
0

Ich habe eine Datumstabelle in meiner Datenbank in Oracle. Wenn ich eine Abfrage ausführe, bekomme ich das Datumsformat als '01 -05-2015 ', aber wenn ich eine ähnliche Abfrage in BIRT führe, bekomme ich das Datumsformat als '01 -MAY-2015 12:00 AM'. Wie kann ich das Datumsformat in TT/MM/JJJ erhalten, indem Sie den Datentyp des Datumsfelds als Datum beibehalten?Datumsformat in Oracle- Abrufdatum bestimmter Bereich

hier ist ein Beispiel meiner Datenbank.

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

auch meine Frage ist:

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 

Ich erhalte Fehler kein gültiger Monat auch

+0

Ich denke, Sie sollten Lösung in Birt Datum Formatierung suchen .. SQL und Orakel sind nicht das Problem hier .. – Plirkee

Antwort

1

Wenn enquiry_dt bereits eine Datumsspalte, warum versuchen Sie es bisher zu konvertieren (und dann char and date nochmal)?

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

Im Feld Birt, in dem Sie das Feld auf den Bericht setzen, legen Sie den Feldtyp auf Datum fest. Wechseln Sie dann in den Eigenschaften für dieses Feld zur Formatierung der Datumszeit und geben Sie schließlich die gewünschte Datumsformatierung für dieses Feld an.

0

Ich bevorzuge immer verwenden Sie Datum Parameter als Zeichenfolgen zu BIRT, mit einem bekannten Datumsformat. Dies gilt sowohl für Berichtsparameter als auch für DataSet-Parameter.

Dann in der Abfrage, ich umwandeln wie dies bisher:

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 
    ) 

Dies funktioniert unabhängig von der Tageszeit. Auf diese Weise z.B. um alle Ereignisse für Januar 2016 auszuwählen, könnte ich die Abfrageparameter '01 .01.2016 'und '31 .01.2016' übergeben (Ich verwende hier das deutsche Datumsformat).