Hallo,
ich habe ein Anfangs und Endatum und sollte die Kalenderwoche + Jahr rausbekommen.
Kann mir jemand weiter helfen?
Danke
gruß
Andreas
Hallo,
ich habe ein Anfangs und Endatum und sollte die Kalenderwoche + Jahr rausbekommen.
Kann mir jemand weiter helfen?
Danke
gruß
Andreas
test=*# select datum, extract(week from datum) as woche, extract(year from datum) as jahr from (select current_date + s*'1day'::interval as datum from generate_series(1,10) s) foo;
datum | woche | jahr
---------------------+-------+------
2011-05-20 00:00:00 | 20 | 2011
2011-05-21 00:00:00 | 20 | 2011
2011-05-22 00:00:00 | 20 | 2011
2011-05-23 00:00:00 | 21 | 2011
2011-05-24 00:00:00 | 21 | 2011
2011-05-25 00:00:00 | 21 | 2011
2011-05-26 00:00:00 | 21 | 2011
2011-05-27 00:00:00 | 21 | 2011
2011-05-28 00:00:00 | 21 | 2011
2011-05-29 00:00:00 | 21 | 2011
(10 Zeilen)
Andreas
hmm, nicht ganz das was ich meinte:
ich habe einen bekannten datumsbereich, für den ich die KW und Jahr will:
Also Beispiel: 01.05.2011 - 26.05.2011:
18 2011
19 2011
20 2011
21 2011
Vielleicht stell ich mich auch einfach grade doof an
extract() ist Dein Freund. Beispiel: siehe Beispiel. Und Doku.
Andreas
EXTRACT kapier ich denk ich, da bekomm ich die Woche und das Jahr heraus, aber wie kann ich ohne eine vorhandene Tabelle einen datumsbereich angeben…
Irgendwie check ich es grade nich.
ich mein wenn ich eine Tabelle hätte, sähe es so aus:
select EXTRACT(WEEK from datum), EXTRACT(YEAR FROM datum) FROM DATUMS_TABELLE where datum BETWEEN ‘2011-01-01’ AND ‘2011-05-03’
Dann baust Dir halt schnell einen Tabelle ‘on the fly’:
test=*# select distinct extract(week from datum) as woche, extract(year from datum) as jahr from (select '2011-05-01'::date + s*'1day'::interval as datum from generate_series(0,25,1) s) foo;
woche | jahr
-------+------
17 | 2011
20 | 2011
18 | 2011
19 | 2011
21 | 2011
(5 Zeilen)
Im inneren läuft:
select '2011-05-01'::date + s*'1day'::interval as datum from generate_series(0,25,1) s;
Das ermittelt ab dem 1. Mai die nächsten n Tage bis zum 26. Mai.
Das an extract() verfüttern.
Andreas
ich glaub jetzt hab ich es:
select distinct extract(week from datum) as woche, extract(year from datum) as jahr from (select ‘2011-01-01’::date + s*‘1day’::interval as datum from generate_series(0,(date(‘2011-08-01’) - date(‘2011-01-01’)),1) s) foo;
passt doch oder ?
hmm wieder quatsch, naja ich versuchs weiter
ok so schlecht uist es gar nich, hab mich verschaut, seltsamerweise bringt er in der ausgabe die kw 1 - 31 und zusätzlich die kw 52, hast du eine erklärung dafür?
Danke
Gruß
Andreas
Ja. Der 1.1. liegt noch in der letzten KW des Vorjahres. Setzen.
Andreas
Das liegt ganz am verwendeten Kalender