webForumDet fria alternativet
Logga in / Bli medlem

Måndag - Söndag

Databaser & SQL

5 svar · 230 visningar · startad av anno

Medlem sedan nov. 2000213 inlägg
Frågan#1

Jag vill visa alla poster mellan måndag till söndag, den aktuella vecka det gäller, den ska alltså vara dynamisk så att det blir olika poster beroende mellan vilka datum det här.

Tänkte mig något i den här stilen:
strSQL = "SELECT * FROM tabell WHERE dtm > '" & dtmFörstiveckan & "' AND dtm < '" & dtmSistiveckan & "' ORDER by dtm desc"

Hur får man ut dessa datum?

Medlem sedan dec. 200012 464 inlägg
#2

Man kan göra det lite olika beroende på vilken databas man använder. T.ex. i Access så kan du använda en selectsats som den här

  select * from tabell
   where datepart("ww",dtm) = datepart("ww",date)
     and year(dtm) = year(date)

Funktionsanropet datepart("ww",dtm) returnerar veckonummer för värdet i kolumnen dtm.

Medlem sedan nov. 2000213 inlägg
#3

Med lite hjälp från dig LarsG och lite annat letande blev det så här till slut:

datum = date()

vecka = datepart("ww",datum)
ar = year(datum)
Dato= ar &"-01-01"

Do Until DatePart("ww", Dato, 2, 2) = vecka
	Dato = DateAdd("d", 1, Dato)
Loop

strSQL = "SELECT * FROM tblLogg WHERE dtmDay > '" & DateAdd("d", -1, Dato) & "' AND dtmDay < '" & DateAdd("d", 6, Dato) & "' ORDER by dtm desc"

Vet inte om det är bästa lösningen men det verkar fungera...

Medlem sedan dec. 19996 721 inlägg
#4

Det gör den säkert, men LarsGs variant är ungefär 1267 gånger effektivare.... :)

Medlem sedan nov. 2000213 inlägg
#5

Givetvis är LarsG:s lösningar alltid effektivast ;)

Medlem sedan juni 200032 967 inlägg
#6

per definition. ;)

268 ms totalt · 4 externa anrop · v20260731065814-full.5386d3bf
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)