Avatar billede dahlke Nybegynder
14. maj 2009 - 11:14 Der er 2 kommentarer og
1 løsning

Find startdato og slutdato for sidste uge

Hej :)

Muligvis er jeg helt afsporet her...

Jeg skal hver mandag morgen finde en startdato og en slutdato for sidste uge. F.eks. i mandags (11/05-09) skal der retuneres følgende:
startdato : 4/5-09 : 00:00:01
slutdato : 10/5-09 : 23:59:59

Jeg har følgende:

    DECLARE @StartDato datetime
    SET @StartDato = SUBSTRING(CONVERT(VARCHAR(8),CONVERT(VARCHAR, DATEADD(dd, 1 - DATEPART(dw, getdate()), getdate()), 112)-7),1,8)+' 00:00:00' --finder søndag i sidste uge
    DECLARE @SlutDato datetime
    SET @SlutDato =  SUBSTRING(CONVERT(VARCHAR(8),CONVERT(VARCHAR, DATEADD(dd, 1 - DATEPART(dw, getdate()), getdate()), 112)-1),1,8)+' 23:59:59' --finder sidste søndag
   

Mit spørgsmål: hvordan tager jeg nemmest højde for den situation hvor man skifter måned midt i ugen? F.eks. den uge der løber fra d. 27/4-09 til d. 3/5-09
Avatar billede aaberg Nybegynder
14. maj 2009 - 12:46 #1
Brug det indebyggede datetime funktionalitet i stedet. Prøv at køre dette script, og se om det ikke er det du skal bruge.

set datefirst 1; --Sætte første dag i ugen til at være mandag. Default er søndag.

declare @today datetime;
set @today = getdate();

declare @thisMonday datetime;
declare @mondayLastWeek datetime;
declare @sundayLastWeek datetime;
declare @dateAsInt integer;

--Find mandag i denn uge.
set @thisMonday = dateadd(day, -datepart(weekday,@today) + 1, @today)

--Sæt klokkeslet til at være 00:00:00
set @dateAsInt = year(@thisMonday) * 10000 + month(@thisMonday) * 100 + day(@thisMonday)
set @thisMonday = convert(datetime, cast(@dateAsInt as char(8)), 112)

--Træk en uge fra, for at få mandag i sidste uge.
set @mondayLastWeek = dateadd(week, -1, @thisMonday);

--Træk et sekund fra denne mandag, for at få slutning af søndag sidste uge.
set @sundayLastWeek = dateadd(second , -1, @thisMonday)

--Skriv ud værdierne
select @mondayLastWeek "mandag sidste uge", @sundayLastWeek "søndag sidste uge"
Avatar billede dahlke Nybegynder
14. maj 2009 - 13:02 #2
Perfekt ... takker mange gange :) Smid et svar
Avatar billede aaberg Nybegynder
14. maj 2009 - 13:15 #3
:-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester