AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[SQL] Zeiträume abfragen

Ein Thema von quendolineDD · begonnen am 13. Mai 2008 · letzter Beitrag vom 14. Mai 2008
Antwort Antwort
Seite 1 von 2  1 2      
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#1

[SQL] Zeiträume abfragen

  Alt 13. Mai 2008, 11:02
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.
select count(gid) from gespraech where kid=1 and Datum=select year(now)-1 Beispielsweise
Mein Problem ist gerade der Bezug auf die Zeitspanne.

Danke im Vorraus

Edit:
Die Tabellenstruktur evtl. noch

GID | KID | Datum | Startzeit | Endzeit | Rufnummer | Art
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#2

Re: [SQL] Zeiträume abfragen

  Alt 13. Mai 2008, 11:04
Hai guendolineDD,

um welche DB handelt es sich denn?
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: [SQL] Zeiträume abfragen

  Alt 13. Mai 2008, 11:04
Welches DBMS?
select count(gid) from gespraech where kid=1 and Datum between now and <Now - 1 Jahr>;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.539 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: [SQL] Zeiträume abfragen

  Alt 13. Mai 2008, 11:06
Ich denke, man käme hier auch ohne BETWEEN aus, da das Datum ja nur größer sein muss als heute - 1 Jahr.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: [SQL] Zeiträume abfragen

  Alt 13. Mai 2008, 11:12
In diesem besonderen Fall ja.
Markus Kinzler
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: [SQL] Zeiträume abfragen

  Alt 13. Mai 2008, 11:42
Es handelt sich um MySQL.
select count(gid) from gespraech where kid=1 and Datum between now and (Now - 1 year) #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
Kennt das -1 Year / Jahr nicht.

Bzw wenn ich select count(gid) from gespraech where kid=1 and Datum between Now() and (Now - 1) mache kommt #1054 - Unknown column 'Now' in 'where clause'

Edit:

Habe die Abfrage etwas spezialisiert:
select count(gid) from gespraech where gid=1 having Datum>(Now - 1) Nun kommt #1054 - Unknown column 'Datum' in 'having clause'
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: [SQL] Zeiträume abfragen

  Alt 13. Mai 2008, 11:48
Die <> waren als Platzhalten für die DBMS-Spezifischen Funktionen gedacht
DATE_SUB(CURRENT_DATE, INTERVAL 1 YEAR)
Markus Kinzler
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#8

Re: [SQL] Zeiträume abfragen

  Alt 13. Mai 2008, 11:53
Ich arbeite nicht mit MySql, aber ein schneller Blick in die Dokumentation führt direkt zum Ziel:

1. Bei Google suchenmysql AND dokumentation

2. Der erste Treffer führt zu MySql Referenzhandbuch

3. Das Inhaltsverzeichnis leitet weiter zu:
Zitat:
Kapitel 12. Funktionen für die Benutzung in SELECT- und WHERE-Klauseln
12.5. Datums- und Zeitfunktionen
4. Gleich das erste Beispiel passt:
Zitat:
Die folgende Abfrage wählt alle Datensätze aus, die einen date_col-Wert haben, der in den letzten 30 Tagen liegt:
SQL-Code:
SELECT something FROM tbl_name
       WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY)
Das Problem liegt darin, dass jedes DBMS seine eigenen Standardfunktionen z.B. für Datum/Zeit hat. MySql kennt also offensichtlich CURDATE() statt NOW() und DATE_SUB für die Datumssubtraktion.

Ist es so schwer, das selbst herauszufinden? Jürgen

mkinzler war schneller, aber vielleicht hilft meine Arbeitsanleitung.
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: [SQL] Zeiträume abfragen

  Alt 13. Mai 2008, 12:04
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.
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: [SQL] Zeiträume abfragen

  Alt 14. Mai 2008, 18:33
SELECT COUNT(gid) FROM gespraech WHERE DAYOFWEEK(Datum)=(7 OR 1) AND Datum BETWEEN CURRENT_DATE AND DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH) count(gid) liefert mir 0 zurück, obwohl es Datensätze gibt, die dem Suchmuster entsprechen.

Komisch ...
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz