Monatserste in Perioden ermitteln

Wolf-Tilmann

Aktiver Benutzer
Beiträge
35
Hallo zusammen,

und schon wieder ein Problem :)

Ich habe hier eine Tabelle, welche mit Perioden gefüllt werden.
Die Perioden beginnen IMMER am 01 eines Monats.
Ich benötige eine Möglichkeit alle 01/Monate zwischen dem Beginn und dem Ende jeder Periode zu ermitteln.
Code:
CREATE TABLE "periode" (
"ID" INTEGER PRIMARY KEY,
"periode" TEXT NOT NULL UNIQUE ,
"beginn" DATETIME NOT NULL ,
"ende" DATETIME NOT NULL );
INSERT INTO "periode" VALUES(1,'a','2011-09-01','2012-04-30');
INSERT INTO "periode" VALUES(2,'r','2012-05-01','2012-09-30');
INSERT INTO "periode" VALUES(3,'t','2012-10-01','2013-03-31');

In der Periode a wären also gesucht
- 2011-09-01
- 2011-10-01
- 2011-11-01
- 2011-12-01
- 2012-01-01
- 2012-02-01
- 2012-03-01
- 2012-04-01

Mie mache ich das?

Vielen Dank
Einen schönen Abend

Wolf-Tilmann

Datenbank: SQLite
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.520
Hallo zusammen,

und schon wieder ein Problem :)

Ich habe hier eine Tabelle, welche mit Perioden gefüllt werden.
Die Perioden beginnen IMMER am 01 eines Monats.
Ich benötige eine Möglichkeit alle 01/Monate zwischen dem Beginn und dem Ende jeder Periode zu ermitteln.
Code:
CREATE TABLE "periode" (
"ID" INTEGER PRIMARY KEY,
"periode" TEXT NOT NULL UNIQUE ,
"beginn" DATETIME NOT NULL ,
"ende" DATETIME NOT NULL );
INSERT INTO "periode" VALUES(1,'a','2011-09-01','2012-04-30');
INSERT INTO "periode" VALUES(2,'r','2012-05-01','2012-09-30');
INSERT INTO "periode" VALUES(3,'t','2012-10-01','2013-03-31');

In der Periode a wären also gesucht
- 2011-09-01
- 2011-10-01
- 2011-11-01
- 2011-12-01
- 2012-01-01
- 2012-02-01
- 2012-03-01
- 2012-04-01

Mie mache ich das?

Vielen Dank
Einen schönen Abend

Wolf-Tilmann

Datenbank: SQLite


Ich würde es so machen:

Code:
test=*# select '2011-09-01'::date + s * '1 day'::interval from generate_series(0, '2012-04-30'::date - '2011-09-01'::date) s where extract (day from '2011-09-01'::date + s * '1 day'::interval) = 1;
  ?column?
---------------------
 2011-09-01 00:00:00
 2011-10-01 00:00:00
 2011-11-01 00:00:00
 2011-12-01 00:00:00
 2012-01-01 00:00:00
 2012-02-01 00:00:00
 2012-03-01 00:00:00
 2012-04-01 00:00:00
(8 rows)

Allerdings verwende ich PostgreSQL.
 

ukulele

Datenbank-Guru
Beiträge
4.637
Ich bezweifle stark das SQLite interval und generate_series beherscht geschweige denn irgend eine andere Form des Workaround :(
 
Werbung:
Oben