AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL Abfrage über Kalender Wochen
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Abfrage über Kalender Wochen

Ein Thema von renekr · begonnen am 14. Mai 2006 · letzter Beitrag vom 14. Mai 2006
Antwort Antwort
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#1

SQL Abfrage über Kalender Wochen

  Alt 14. Mai 2006, 11:01
Datenbank: SQL Server • Version: 2005 STD • Zugriff über: ADO
Hallo,
Ich bin gerade dabei eine Ausweretung über eine Tabelle zu machen .

Dabei möchte ich folgendes tun.

In der Tabelle gits ein Datetime Feld .

Ich möchte aber die Zeiten anhand der KW abfragen.

Also nicht von bis sondern nur zb. KW20 /2005 eingeben zum wählöen und er zeigt mir die Einträge dieser KW an.

Die KWs ziehe ich als Auswahlkriterium vorher aus der Tabelle raus.

SELECT distinct +'Jahr '+CONVERT(CHAR(4),datepart(YYYY,Stoer_Zeit)) +' / KW '+ CONVERT(CHAR(2),datepart(wk,Stoer_Zeit)) as JAHRKW from aktionsdaten order by JahrKW desc
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#2

Re: SQL Abfrage über Kalender Wochen

  Alt 14. Mai 2006, 11:10
Ich würde das ganze über eine Kalenderfunktion machen, die Dir das Datum von bis der KW ermittelt und dann in das Feld in die WHERE Klausel einstzen.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#3

Re: SQL Abfrage über Kalender Wochen

  Alt 14. Mai 2006, 11:16
Ich würde eventuell eine View erstellen:
SQL-Code:
create view aktionsdaten_View as
select ID, datepart (wk, Stoer_Zeit) as Woche from aktionsdaten
Um dann anschliessend mittels Join den entsprechenden Eintrag zu finden:
SQL-Code:
select a.* from aktionsdaten a join aktionsdaten_View v on v.ID=a.ID
where w.Woche = 38
Alternativ kannst du auch gleich alle Felder in die View übernehmen, und deine Suche dann ohne Join nur noch über diese View machen.
  Mit Zitat antworten Zitat
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: SQL Abfrage über Kalender Wochen

  Alt 14. Mai 2006, 11:36
Hi,
Danke für die schnellen und guten tips.

Ich habe nun mehrere möglichkeiten es zu implementieren.
Denke ich werde mir eine View machen und dann die KWs und yyyy aus der View lesen,so bin ich ein wenig unabhängiger vom Source Code Delphi !


Nun noch eine Frage.
Kann ich zb Beetween KW 2 Jahr 2005 und kw 5 jahr 2005 machen?
das normale beetween vom datum hab ich schon.

danke

PS: Kann mir ev. noch jemand sagen wie ich meine 1. Abfrage sortieren kann.
Ich hab das Problem mit der KW das die mal 1 Stellig und mal 2 Stellig ist.

Danke
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: SQL Abfrage über Kalender Wochen

  Alt 14. Mai 2006, 12:15
Ich empfehle nicht, eine View zu erstellen, oder die Funktion 'Datepart' zu verwenden. Der Grund ist der, das der SQL-Server dann keinen Datums-Index mehr verwenden kann.

Ich habe eine allgemeine Datumsberechnungsklasse, die mir zu einer gegebenen Periode (Woche, Monat, Quartal, Jahr etc.) den Anfangs- und Endzeitpunkt berechnet. Bei der KW wäre das z.B. Montag 00:00 bis Sonntag 23:59:59. Dann verwende ich im Query einfach ein 'BETWEEN' und dann klappts auch mit dem Index:

Select * from Daten Where TheDateTime Between :DateFrom and :DateTo Für das Datumsformat verwende ich das universelle ODBC-Datumsformat, das -obwohl kaum dokumentiert- auch vom SQL-Server unterstützt wird:

Select * from Daten Where TheDateTime Between { ts '2005-12-24 03:50:00' } and { ts '2005-12-31-2005 18:43:20' } Das Gute an diesem etwas merkwürdigen Format ist, das es überall funktioniert.

Ich bin mir heute nicht mir sicher, aber ich glaube, das die deutsche KW-Berechnung von der amerikanischen abweicht.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: SQL Abfrage über Kalender Wochen

  Alt 14. Mai 2006, 12:37
Hi,
also das Format für EN oder DE Datenbank ist wirklich anderst.

Ich werde nun mal einiges testen was für mich besser ist.

Aber ich habe noch Probleme mit der Sortierung der KA und Jahr.
Weil zb die Reihen folge so ist.
Mein SQL order sieht so aus.

ORDER BY Jahr, Woche


2005 KW 1
2005 KW 11
2005 KW 2
2005 KW 21

und ich will es so.
2005 KW 1
2005 KW 2
2005 KW 11
2005 KW 21

Danke
  Mit Zitat antworten Zitat
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: SQL Abfrage über Kalender Wochen

  Alt 14. Mai 2006, 14:00
I bekomme einfach keinen guten SQL Query hin wo ich eine Abfrage von KW2 Jahr 2005 bis KW 4 Jahr 2006 zb. machen kann.

Mit Datepart between klappts nicht bei mir.

Kann mir jemand einen Tip geben?

danke.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

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

Re: SQL Abfrage über Kalender Wochen

  Alt 14. Mai 2006, 14:15
Hai renekr,

warum machst Du es nicht so wie von alzaimar vorgeschlagen? Wenn ich ihn richtig verstehe übergibt er direkt das Start/EndDatum einer KW als TDateTime an seine SQL-Abfrage.

Delphi-Quellcode:
procedure TDemoForm.btn_testClick(Sender: TObject);
begin
  with ADOQuery1 do
  begin
    Close;
    SQL.Text := 'SELECt * FROM aktionsdaten WEHERE Stoer_Zeit BETWEEN :starzeit AND :endzeit ORDER BY Stoer_Zeit';
    Parameters.ParamByName('startzeit').Value := StartOfAWeek(2005, 2);
    Parameters.ParamByName('endzeit').Value := EndOfAWeek(2006, 4);
    Open;
  end;
end;
Stephan B.
  Mit Zitat antworten Zitat
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#9

Re: SQL Abfrage über Kalender Wochen

  Alt 14. Mai 2006, 16:39
Hi sharky,
werde ich mal testen.
Danke.

PS: Das mit dem Parameter.

Wie muss i den Parameter erstellen?
Ich habe es probiert ihn im Query einzugeben udn auch ohne.

I bekomm die Meldung das der Parameter nicht existiert.

Habe bis heute mit Params in Querys nicht viel gemacht.

Danke.
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:44 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