2017-05-23 4 views
0

Ich arbeite mit PostgreSQL. Ich habe zwei Datenbanktabellen, ich möchte das minimale und maximale Datum erhalten, das in der Datumsbereichspalte table1 gespeichert wird, die vom Typenzeichen variiert. table1 und table2 werden mit sid gemappt. Ich möchte den maximalen und minimalen Datumsbereich von table1 im Vergleich zu sid von table2 abrufen. Finden Sie die Demo here. Das Ergebnis ist falsch.Ergebnis ist falsch beim Abrufen des Datums

tabelle1:

sid daterange 

100 5/25/2017 
101 1/24/2017 
102 4/4/2014 
103 11/12/2007 
104 4/24/2012 
105 01/15/2017 
106 1/1/2017 
107 3/11/2016 
108 10/10/2001 
109 1/10/2016 
110 12/12/2016 
111 4/24/2017 
112 06/28/2015 
113 5/24/2017 
114 5/22/2017 

table2:

sid description 

100 success 
101 pending 
104 pending 
105 success 
106 success 
107 success 
110 success 
111 pending 
112 failed 
113 failed 
114 pending 

Unten ist meine Frage:

select min(daterange) as minDate,max(daterange) as maxDate from (SELECT to_date(table1.daterange, 'DD/MM/YYYY') as daterange FROM table1,table2 where 
     table1.sid = table2.sid) tt; 

Das Ergebnis, wie unterhalb dessen ist falsch (MinDate und MaxDate angezeigt sind falsch Daten).

mindate  maxdate 
2013-12-07 2019-01-07 

Bitte beraten. daterange Spalte in Tabelle 1 ist vom Typ Charakter varying.I nicht ::date verwenden können, um Datumstyp zu konvertieren, weil ich diese Abfrage in meinem Java Hibernate Code verwenden müssen, und der Java-Code erkennt nicht ::

+0

Warum ist das Ergebnis falsch ... wollen Sie ein Ergebnis für jede SID? – Hackerman

+0

no..ich meine die minimalen und maximalen Daten, deren Anzeige falsch ist. – user3633028

Antwort

1

Sie haben Tag und Monat gemischt in der Datumsformat-Zeichenfolge. Sollte to_date sein (table1.daterange, 'MM/DD/YYYY')

Verwandte Themen