Kalender

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Kalender

Re: Kalender

von F3K Total » So, 01.01.2012 13:35

Hallo Peter,
pmoegenb hat geschrieben:Kann es sein, dass Du automatisiert Datensätze mit einem Von und Bis Datum erzeugen möchtest ?
Fast, keine Datensätze nur eine Abfrageliste per SQL.
Ich habe eine Tabelle, in die wird in unregelmäßigen Abständen etwas eingetragen, jeder Datensatz hat auch eine Spalte Datum.
Nun frage ich per MIN("Datum") und MAX("Datum") die Grenzen ab.
Das SQL-Statement soll mir jetzt eine Spalte mit allen existierenden Tagen in einer Spalte "alle_Tage" zwischen diesen zwei Grenzen liefern.
z.B.
MIN("Datum") =22.12.2011
MAX("Datum") = 01.01.2012
Ergebnis:
"alle_Tage"
22.12.2011
23.12.2011
24.12.2011
25.12.2011
26.12.2011
27.12.2011
28.12.2011
29.12.2011
30.12.2011
31.12.2011
01.01.2012
Grund: Man kann das Ergebnis z.B. als Auswahlliste eines Listenfeldes oder für weitere Berechnungen verwenden.
Habe ich diese Spalte, kann ich z.B. alle Montage mit

Code: Alles auswählen

select "alle_Tage" as "alle_Montage" from "Tabelle" where dayofweak("alle_Tage")=2
abfragen.


Ich bin inzwischen schon weiter gekommen, das o.a. klappt, aber ich benötige dazu noch immer zwei Hilfstabellen.

1.) "03_Tage" in der alle Zahlen von 1 bis 31 als "N" aufgeführt sind.
2.) "04_Monate" in der alle Zahlen von 1-12 als "N" aufgeführt sind.

Die Abfrage sieht so aus:

Code: Alles auswählen

SELECT "Datum" FROM (SELECT DISTINCT CONVERT ( CONVERT ( YEAR( "Datum" ) || '-' || casewhen( "04_Monate"."N" < 10, '0' || "04_Monate"."N", CONVERT ( "04_Monate"."N" , "VARCHAR" ) ) || '-' || casewhen( "03_Tage"."N" < 10, '0' || "03_Tage"."N", CONVERT ( "03_Tage"."N" , "VARCHAR" ) ) , "TIMESTAMP" ) , "DATE" ) AS "Datum" FROM "Tabelle1", "04_Monate", "03_Tage") where DAYOFYEAR("Datum") and  "Datum" >= (SELECT Min("Datum") FROM "Tabelle1") and "Datum" <= (SELECT Max("Datum") FROM "Tabelle1")
Das muß doch einfacher/kürzer möglich sein?

Gruß Rik

von pmoegenb » So, 01.01.2012 13:01

Hallo Rik,
ich komme nicht dahinter, was Du meinst. Du schreibst einerseits von Spalten erzeugen, führst aber in Deinem Beispiel Zeilen (=Datensätze) auf.

Spalten können nur mittels ALTER TABLE ADD Column erzeugt werden.

Count = Zählt Datensätze
JOIN (INNER oder OUTER) = verbindet Datenbanktabellen

Kann es sein, dass Du automatisiert Datensätze mit einem Von und Bis Datum erzeugen möchtest ? Ob dies per SQL möglich ist, bin ich überfragt. In Verbindung mit einer Programmiersprache geht's auf jeden Fall.

Re: Kalender

von F3K Total » Sa, 31.12.2011 09:38

Hallo Peter,
da habe ich mich wohl missverständlich ausgedrückt.
Ich möchte nicht spezielle Datensätze einer Tabelle, die eine Spalte "Datum" hat selektieren, sondern eine Spalte aller im Kalender aufeinanderfolgenden Tage zwischen zwei Daten als Datum erzeugen.
Klar benötigt man irgendwo eine Tabelle als Grundlage, ich denke, die könnte aus dem INFORMATION_SCHEMA genommen werden.
z.B.:
Datum
01.01.2012
02.01.2012
.
.
.
03.09.2012
04.09.2012
05.09.2012

Ich bin mir relativ sicher, dass dies mit den Datumsfunktionen, count , join und irgendwo einem +1 möglich sein müßte.

Gruß Rik

Re: Kalender

von pmoegenb » Sa, 31.12.2011 09:09

Hallo Rik,
hier ein Beispiel:

Code: Alles auswählen

SELECT  "Geburtsdatum" AS "Datum" FROM "Tabelle1" WHERE "Geburtsdatum" >= :Datum1 AND "Geburtsdatum" <= :Datum2
Beim Öffnen der Abfrage wirst Du nach dem Inhalt der Parameter Datum1 und Datum2 gefragt.

Kalender

von F3K Total » Sa, 31.12.2011 07:15

Guten Morgen,
ich bin mir sicher dass es möglich ist, komme aber nicht drauf.
Wie kann man per SQL-Statement (embedded HSQLDB) eine Spalte, in der alle Tage zwischen zwei vorgegebenen Daten im Format DATE angezeigt werden, erzeugen?
Hat jemand einen Ansatz?

Gruß Rik

Nach oben