![]() |
[SQL] Zeiträume abfragen
Hallo Community.
Ich habe eine Tabelle, wo Kundengespräche gespeichert sind. Die Tabelle hat ein Feld Namens "Datum". Nun möchte ich alle Felder auswählen, in welchen das Datum den letzten 365 Tagen entspricht.
SQL-Code:
Beispielsweise ;)
select count(gid) from gespraech where kid=1 and Datum=select year(now)-1
Mein Problem ist gerade der Bezug auf die Zeitspanne. Danke im Vorraus Edit: Die Tabellenstruktur evtl. noch :)
SQL-Code:
GID | KID | Datum | Startzeit | Endzeit | Rufnummer | Art
|
Re: [SQL] Zeiträume abfragen
Hai guendolineDD,
um welche DB handelt es sich denn? |
Re: [SQL] Zeiträume abfragen
Welches DBMS?
SQL-Code:
select count(gid) from gespraech where kid=1 and Datum between now and <Now - 1 Jahr>;
|
Re: [SQL] Zeiträume abfragen
Ich denke, man käme hier auch ohne BETWEEN aus, da das Datum ja nur größer sein muss als heute - 1 Jahr.
|
Re: [SQL] Zeiträume abfragen
In diesem besonderen Fall ja.
|
Re: [SQL] Zeiträume abfragen
Es handelt sich um MySQL.
SQL-Code:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'year)' at line 1
select count(gid) from gespraech where kid=1 and Datum between now and (Now - 1 year)
Kennt das -1 Year / Jahr nicht. Bzw wenn ich
SQL-Code:
mache kommt #1054 - Unknown column 'Now' in 'where clause'
select count(gid) from gespraech where kid=1 and Datum between Now() and (Now - 1)
Edit: Habe die Abfrage etwas spezialisiert:
SQL-Code:
Nun kommt #1054 - Unknown column 'Datum' in 'having clause'
select count(gid) from gespraech where gid=1 having Datum>(Now - 1)
|
Re: [SQL] Zeiträume abfragen
Die <> waren als Platzhalten für die DBMS-Spezifischen Funktionen gedacht
SQL-Code:
DATE_SUB(CURRENT_DATE, INTERVAL 1 YEAR)
|
Re: [SQL] Zeiträume abfragen
Ich arbeite nicht mit MySql, aber ein schneller Blick in die Dokumentation führt direkt zum Ziel:
1. ![]() 2. Der erste Treffer führt zu ![]() 3. Das Inhaltsverzeichnis leitet weiter zu: Zitat:
Zitat:
Ist es so schwer, das selbst herauszufinden? Jürgen mkinzler war schneller, aber vielleicht hilft meine Arbeitsanleitung. |
Re: [SQL] Zeiträume abfragen
Ich hab mich über die falschen Suchbegriffe in die Dokumentation begeben. Aber trotzdem danke für eure Lösungen, es tut nun wie es soll.
|
Re: [SQL] Zeiträume abfragen
SQL-Code:
count(gid) liefert mir 0 zurück, obwohl es Datensätze gibt, die dem Suchmuster entsprechen.
SELECT COUNT(gid) FROM gespraech WHERE DAYOFWEEK(Datum)=(7 OR 1) AND Datum BETWEEN CURRENT_DATE AND DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH)
Komisch ... |
Re: [SQL] Zeiträume abfragen
Zitat:
Versuch mal
SQL-Code:
WHERE DAYOFWEEK(Datum) IN (1,7)
|
Re: [SQL] Zeiträume abfragen
SQL-Code:
liefert immer noch 0 zurück ...
SELECT COUNT(gid) FROM gespraech WHERE DAYOFWEEK(Datum) IN (1,7) AND Datum BETWEEN CURRENT_DATE AND DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH)
|
Re: [SQL] Zeiträume abfragen
Was kommt hierbei heraus?
SQL-Code:
SELECT DAYOFWEEK(Datum) FROM gespraech
WHERE Datum BETWEEN CURRENT_DATE AND DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH) |
Re: [SQL] Zeiträume abfragen
Manchmal könnt ich mich wirklich grün und blau ärgern ... Ich hab gerade bemerkt, das es unlogisch ist, die Zeitraum abfrage so zu gestalten und habe sie umgedreht.
SQL-Code:
Nun geht es Problemlos.
SELECT COUNT(gid) FROM gespraech WHERE DAYOFWEEK(Datum) IN (1,7) AND Datum BETWEEN DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH) AND CURRENT_DATE
Man sieht manchmal den Wald vor lauter Bäumen nicht... |
Re: [SQL] Zeiträume abfragen
Das macht Sinn, hatte ich aber auch nicht gesehen :zwinker:
[edit]BTW: Wie ich bereits erwähnt hatte, sollte das so auch gehen:
SQL-Code:
und das evtl. sogar schneller, da nur noch eine Grenze geprüft werden muss und nicht zwei.[/edit]
...AND Datum >= DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz