2016-07-13 10 views
-1

Wir haben zwei Tabellen mit dem Namen A und B. Diese beiden Tabellen enthält ein gemeinsames Feld, d. H. DOB. In der Tabelle A füllt es sich als 01/11/2011(MM/DD/YYYY) und Tabelle B füllt es als 11/01/2011(DD/MM/YYYY) Ich brauche SQL-Abfrage, um dieses Feld in beiden Tabellen zu vergleichen und diesen Wert abzurufen.SQL -> Um das Datumsfeld in den 2 Tabellen zu vergleichen

+2

(1) Markieren Sie Ihre Frage mit der von Ihnen verwendeten Datenbank. (2) Geben Sie die Datentypen der Spalten an. –

+0

Was ist der Typ Ihrer Spalten? – rlanvin

+1

Und natürlich, posten Sie bitte die SQL, die Sie versucht haben. Sie werden freundlichere Antworten bekommen, wenn Sie etwas Mühe zeigen. – sstan

Antwort

1

Datumsangaben in relationalen Datenbanken werden in einem internen Format gespeichert. Daher muss ich davon ausgehen, dass Ihre Tabellen ein Datum als String oder Zahl speichern. Das erste, was zu tun ist, ist dieses Problem zu beheben. Die Verwendung nativer Formate ist vorteilhaft - deshalb existieren sie.

Wenn ich Zeichenfolgen annehmen, können Sie dieses Problem mit Zeichenfolgenmanipulationen lösen. Obwohl die Funktionen zwischen Datenbanken unterscheiden können, ist die Idee, das gleiche:

from a join 
    b 
    on right(a.dob, 4) = right(b.dob, 4) and  -- compare years 
     left(a.dob, 2) = substring(b.dob, 3, 2) and -- compare months 
     substring(a.dob, 3, 2) = left(b.dob, 2)  -- compare days 

Wegen all der Funktionen, wird der SQL-Engine Vorteil eines Index nehmen kann. Gehen Sie zurück zu meinem ersten Rat und speichern Sie die Daten als den passenden date Typ für Ihre Datenbank.

Verwandte Themen