Genaue Datum über Kalenderwoche und Jahr

Mahlzeit,

ich habe folgendes Problem:

und zwar muss ich an das genaue Datum (also tt.mm.jj) kommen, obwohl ich nur die Kalenderwoche den Wochentag und das Jahr weiß. (z.B. will ich wissen welcher der Mittwoch in der 32. Wochen im Jahr 2006 ist)

Eigentlich ganz einfach, aber ich wüsste nicht wie man da mit Dateformat oder anderem herankommmt.

Also falls jemand einen Rat weiß, immer her damit :wink:

Vielen danke schonmal im Vorraus

Kellaz

PS: Also das ganze als SQL select-Befehl, wäre ganz nett ^^

Hallo.

ich habe folgendes Problem:

Der Leser auch: für welche Datenbank in welcher Version soll das Problem betrachtet werden ? Einfache Annahme: SQL Server 2000 & 2005

und zwar muss ich an das genaue Datum (also tt.mm.jj) kommen,

engl. (dd.mm.yy)
Aber ein Angebot: ‚datetime‘

mfg M.L. (der übrigens keine SELECT Abfrage dazu parat hat)

Mit SQL kann ich nicht dienen, aber in php geht’s.

Falls gewünscht, bitte kurze Antwort, sonst den Beitrag einfach überlesen.

Gruß

ok, hat sich erledigt, ich hab mitbekommen, das bei uns in der Datenbank noch einen andere Tabelle mit den Daten steht, deswegen brauch ich das nichtmehr.

Falls es trotzdem jemand weiß, kann er es ja mitteilen, würde mich dann doch interessieren ob es überhaupt geht…

Und ja das ganze sollte für SQL-Server 2000 oder 2005 sein, dachte das sei eigentlich klar, sorry dafür.

trotzdem danke für die Antworten und bis denne dann mal

Kellaz

Hallo Kellaz,

das hat mich ja doch gewurmt. Hier eine ausführliche „Lösung“, die man in einem Select entsprechend „verwursten“ kann:

declare @year nvarchar(2)
declare @week int
declare @dayOfWeek int
declare @resultDay dateTime

--mal ein paar Werte angnommen
set @year = '06'
set @week = 44
set @dayOfWeek = 1

--ermitteln des ersten Tages des gesuchten Jahres
set @resultDay = DATEADD(day, 0, '1/1/' + @year)
--Wochen addieren
set @resultDay = DATEADD(Week, @week - 1, @resultDay)
--Tage addieren
set @resultDay = DATEADD(day, @dayOfWeek, @resultDay)

--oder 
set @resultDay = DATEADD(day, @dayOfWeek, DATEADD(Week, @week - 1, DATEADD(day, 0, '1/1/' + @year)))
--ist halt sehr unübersichtlich ...


print @resultDay
--mE tatsächlich der 30.10.2006!

Das dürfte aber noch von ein paar Kleinigkeiten verfälscht werden:
Wann beginnt die KW 1?
Welcher Tag ist der erste Wochentag?

Das kann man aber in den Formeln durch (±1) an @week und @dayOfWeek entsprechend anpassen.

Hoffe das triffts auch …

mfg

Dirk.Pegasus

Hallo,

folgendes SQL (für DB2 als DBMS) sollte das gewünschte Ergebnis liefern:

„SELECT DATE(SUBSTR(DIGITS ((2006*1000)+((32 - 1) * 7) + 2 + 1), 4, 7)) from sysibm.sysdummy1“

Gruß
Thomas

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

noch eine andere Lösung (ebenfalls für DB2), etwas leichter zu verstehen - wie ich meine…:

„select date(‚2006‘||’-01-01’) + (32*7-7+3) days from sysibm.sysdummy1“

Gruß
Thomas

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]