2016-04-14 2 views
1

Ich muss Liste der Aufträge zwischen von und zu Daten abfragen. Beide sind optional und sollten, falls nicht angegeben, von der Klausel WHERE ausgeschlossen werden. Ich muss dies mit JDBI für Postgres erreichen.Wie Abfrage zwischen Datumsbereich, wenn beide von und bis Datum sind optional mit JDBI?

ex:

wenn nur ab dem Datum der Abfrage zur Verfügung gestellt wird, sollte sein:

SELECT id, total, date, country FROM orders WHERE order date >=:fromDate AND country =:country

wenn bisher nur zur Verfügung gestellt wird die Abfrage sein sollte:

SELECT id, total, date, country FROM orders WHERE order date <:toDate AND country =:country

wenn beide Daten nicht angegeben sind:

SELECT id, total, date, country FROM orders WHERE country =:country

Danke für jede Hilfe.

+0

versuchen Sie bauen die Abfrage durchführen? Wie bestimmen Sie, wann ein einzelnes Datum übergeben wird, wenn es sich um ein fromDate oder toDate handelt? –

+0

Die Beispiele, die ich in der Anwendung habe, sind Abfragen, die wie '@SqlQuery (SELECT-ID, Summe, Datum, Land FROM Bestellungen WHERE Land =: Land) in den DAO-Schnittstellen geschrieben sind. Ich weiß nicht, wie ich die Abfrage erstellen soll. Die Daten werden als POST von Formularparametern mit dem Namen Datum und Enddatum empfangen. – Nikki

+0

@Vvn können Sie mich bitte auf ein Beispiel für das dynamische Erstellen der Abfrage verweisen? Danke vielmals. – Nikki

Antwort

2

Es gibt nichts besonderes in JDBI, das Sie dies tun lassen würde.

Ihre Optionen sind:

  1. prüfen innerhalb des Codes, wenn einer der Parameter null ist, und rufen Sie eine geeignete Methode DAO

  2. (Sie 4 für alle möglichen Permutationen von null/nicht null bräuchten)
  3. Einige SQL, die PostgreSQL CASE-Ausdruck, so etwas wie diese verwendet:

    SELECT id, total, date, country FROM orders 
    WHERE order_date >= (case when :fromDate is null then 0 else :fromDate end) 
    AND order_date <= (case when :toDate is null then current_date else :toDate end) 
    AND country =:country 
    
Verwandte Themen