Zum Inhalt springen

Datumsvergleich in SQL


kossy

Empfohlene Beiträge

Servus !

Ich habe ein Datum in einer Tabelle meiner Datenbank stehen und möchte nun überprüfen ob dieses Datum in einem bestimmten Intervall liegt.

Hier mal der ganze Code meines Select-Statements:

select gesamtbetrag, vorname, name

from

(select name, vorname, sum(menge*preis) as gesamtbetrag

from

mitarbeiter m inner join bestellung b

on m.pers_nr = b.pers_nr

inner join bestellposition bp

on b.pers_nr = bp.pers_nr an

b.bestell_nr = bp.bestell_nr

inner join wird_abgebildet_auf waa

on bp.katalog_nr = waa.katalog_nr and

bp.pers_nr = waa.pers_nr and

bp.bestell_nr = waa.bestell_nr

inner join lieferaehigkeit lfk

on waa.katalog_nr = lfk.katalog_nr

where to_date(datum,'dd.mm.yyyy') between to_date('15.05.08','dd.mm.yyyy') and to_date('20.05.08','dd.mm.yyyy') and lower(name) like '%von%'

group by name, vorname

);

Die fettmarkierte Stelle zeigt den gewünschten Vergleich innerhalb der where Klausel. Ich bekomme ständig die Meldung, dass die rechte Klammer fehlt :rolleyes: Verstehe allerdings nicht warum.

Kann ich einen Datumsvergleich so überhaupt durchführen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Es hat an dem "and" gelegen, weil ich dort ein d vergessen hatte. Außerdem habe ich noch einen Tabellennamen falschgeschrieben. Ich gehe mal davon aus, dass ich die Datumsabfrage so ich es mir vorgestellt habe, ausführen kann. Bei einem anderen Beispiel, was ich ausprobiert habe, klappte es.

Mal was anderes:

Wie ihr in meinem Beispielcode sehen konntet, habe ich mehrere Tabellen mit Inner joins und der on-Klausel verknüpft. Wenn ich dasselebe Beispiel mit einem einfach JOIN Befehl und der using Klausel abarbeite, komme ich zu einem anderen Ergebnis.

Was ist denn nun besser? Inner Joins oder die andere Variante?

Hier der alternative Quellcode:

SELECT sum(menge*preis)||' EURO' AS "Gesamtbetrag", vorname||' '||name AS "Besteller"

FROM bestellposition

JOIN bestellung USING(bestell_nr, pers_nr)

JOIN wird_abgebildet_auf USING (bestell_nr,pers_nr, katalog_nr)

JOIN lieferfaehigkeit USING(katalog_nr, lief_nr)

JOIN mitarbeiter USING(pers_nr)

WHERE datum between to_date('15.06.2006','DD.MM.YYYY') AND to_date ('20.06.2006','DD.MM.YYYY')

GROUP BY name, vorname

HAVING UPPER(name)LIKE '%VON RAND%';

Datnekbank ist im Anhang !!

Vielen Dank !!

post-50137-14430447970167_thumb.jpg

Inhalt_Tables_1Seite.pdf

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...