AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Alle Tage zwischen Zeiträumen eines Jahres als SQL Ergebnis?
Thema durchsuchen
Ansicht
Themen-Optionen

Alle Tage zwischen Zeiträumen eines Jahres als SQL Ergebnis?

Ein Thema von fillibuster · begonnen am 29. Jul 2013 · letzter Beitrag vom 29. Jul 2013
Antwort Antwort
Seite 1 von 2  1 2      
fillibuster

Registriert seit: 3. Nov 2010
Ort: Coesfeld
245 Beiträge
 
Delphi 2010 Professional
 
#1

Alle Tage zwischen Zeiträumen eines Jahres als SQL Ergebnis?

  Alt 29. Jul 2013, 13:41
Datenbank: MySQL • Version: 5x • Zugriff über: PHP
Hallo,

ich habe in meiner Datenbank die Urlaube der Mitarbeiter mit Datetime Felder (date_from,date_to) gespeichert. Nun möchte ich mir für alle angegebenen Zeiträume eines Jahres die kompletten Tage ausgeben lassen.
Pseudo Beispiel:
Code:
SELECT * FROM items WHERE year=2013 ergibt
date_from: 12.07.2013 | date_to: 15.07.2013
date_from: 21.12.2013 | date_to: 23.12.2013
Ich möchte aber 12.07.2013,13.07.2013,14.07.2013,15.07.2013,21.12. 2013,22.12.2013,23.12.2013 als Ergebnis bekommen

Danke und viele Grüße
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Alle Tage zwischen Zeiträumen eines Jahres als SQL Ergebnis?

  Alt 29. Jul 2013, 13:51
Ich habe mit Datenbanken nicht viel am Hut, aber wäre denn nicht gerade das eigentlich ein Fall für Programmlogik? Du hast es doch auch extra so in deine DB gepackt. Außerdem ist es so sicher einfacher, wenn man jetzt bsp. Wochenende oder gesetzliche Feiertage wieder abziehen will.

(Wieviel Urlaubstage im Jahr hat der arme Mensch?)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Alle Tage zwischen Zeiträumen eines Jahres als SQL Ergebnis?

  Alt 29. Jul 2013, 14:05
Wenn nur Arbeitstage in den Zeiträumen sind
SELECT DATEDIFF( date_to, date_from) FROM items WHERE year=2013;
Markus Kinzler

Geändert von mkinzler (29. Jul 2013 um 14:09 Uhr)
  Mit Zitat antworten Zitat
fillibuster

Registriert seit: 3. Nov 2010
Ort: Coesfeld
245 Beiträge
 
Delphi 2010 Professional
 
#4

AW: Alle Tage zwischen Zeiträumen eines Jahres als SQL Ergebnis?

  Alt 29. Jul 2013, 14:08
Ich habe mit Datenbanken nicht viel am Hut, aber wäre denn nicht gerade das eigentlich ein Fall für Programmlogik? Du hast es doch auch extra so in deine DB gepackt. Außerdem ist es so sicher einfacher, wenn man jetzt bsp. Wochenende oder gesetzliche Feiertage wieder abziehen will.
Ja eigentlich hast du Recht. Die Datenbank stammt aus einer Delphianwendung, da ich aber gerade eine Webschnittstelle mit PHP schreibe muss ich ein wenig auf die Laufzeit achten (es wird eine Jahresübersicht).

(Wieviel Urlaubstage im Jahr hat der arme Mensch?)
Gibt es bei euch mehr als 6 Tage Jahresurlaub?
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#5

AW: Alle Tage zwischen Zeiträumen eines Jahres als SQL Ergebnis?

  Alt 29. Jul 2013, 14:15
Du benötigst eine Tabelle, in der alle Datumse (meine vollkommen falsche Pluralbildung von Datum) drinstehen. Nennen wir sie 'Dates', mit einer Spalte 'Datum'

Code:
Select Dates.Datum
from
  Dates join
  items
    on Dates.Datum between items.date_from and items.date_to
where items.year=2013
Ergäbe dann eine Liste aller Tage des Urlaubs. Wenn deine 'Dates' Tabelle noch Flags für 'Wochenende','Feiertag' usw. hat, dann kannst Du diese auch noch herausfiltern und die dann relevanten Urlaubstage ausrechnen.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#6

AW: Alle Tage zwischen Zeiträumen eines Jahres als SQL Ergebnis?

  Alt 29. Jul 2013, 15:00
So wie ich es verstanden habe ist dort nur das Anfangs- und Enddatum jedes Urlaubs gespeichert. Dann sollte es in etwa so gehen (für MySQL sind bestimmt noch Anpassungen nötig):
Code:
declare @dVon date;
declare @dBis date;

try
   create table #temp (Urlaubstag date);
catch all
end try;  

@dVon = '2013-07-01';
@dBis = '2013-07-31';

while @dVon <= @dBis do
   insert into #temp values (@dVon);
   @dVon = @dVon+1;   
end while;
select * from #temp;
 
select urlaubstag from #temp;
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Alle Tage zwischen Zeiträumen eines Jahres als SQL Ergebnis?

  Alt 29. Jul 2013, 15:02
Das ergibt aber auch kein anderes Ergebis als die Lösung mit DateDiff()
Man müsste hier noch WE und Feiertage ausschliessen
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: Alle Tage zwischen Zeiträumen eines Jahres als SQL Ergebnis?

  Alt 29. Jul 2013, 16:50
Evtl. verstehe ich die Frage auch falsch, aber kann es nicht sein, dass der TE eine Liste mit den Datumswerten haben möchte, anstatt der reinen Anzahl der Tage?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Alle Tage zwischen Zeiträumen eines Jahres als SQL Ergebnis?

  Alt 29. Jul 2013, 17:20
Ich denke Da liegst Du richtig.
Was noch schlimmer ist, er will wohl einen String mit allen Urlaubstagen haben.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#10

AW: Alle Tage zwischen Zeiträumen eines Jahres als SQL Ergebnis?

  Alt 29. Jul 2013, 18:06
Was noch schlimmer ist, er will wohl einen String mit allen Urlaubstagen haben.
Schlimmer? Da kennst Du mySQL schlecht.
Code:
select group_concat(dates.datum separator ', ')
  from ...
und fertig.
  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 01:25 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