webForumDet fria alternativet

Hämta poster inom ett tidsintervall

Databaser & SQLur Databashanterare & SQL

4 svar · 696 visningar · startad av devotion

devotionMedlem sedan jan. 20013 582 inlägg
#1

Hej! :)

Jag har en tabell; tblTime som bla innehåller kolumnerna StartDate och StopDate.

Jag skulle vilja göra på följande sätt:

Hämta alla poster inom ett visst datumintervall där tiderna ligger inom ett vist tidsintervall.

Tex:

Hämta alla tider som är utförda mellan kl 07:00 och 23:00 för maj månad

Grunden har jag enligt:

sSQL =" SELECT COALESCE(SUM(tblTime.[Time]),0) AS Hours" _
	& " FROM tblcustomer" _
	& " INNER JOIN tblTask" _
	& " ON tblCustomer.[Nr] = tblTask.CustomerNr" _
	& " LEFT JOIN tblTime" _
	& " ON tblTask.[Id] = tblTime.TaskId" _
	& " WHERE tblCustomer.Category = '" & sWorkGroupName & "'" _
	& " And tblTime.StartDate >='" & tmStartDate & "'" _
	& " And tblTime.StartDate < '" & tmStopDate & "'" _
	& " And [tblTime].[TimeTypeId] LIKE '0'" _

Denna kod hämtar alla tider inom ett visst datum intervall

Hur får man till det?

Mvh
Henrik

BrimbaMedlem sedan dec. 19995 875 inlägg
#2

Detta kanske funkar?

...
	WHERE
		YEAR(startdate) = tmYear
		AND MONTH(startdate) = tmMonth
		AND DATEPART(hh, startdate) >= tmStartHour
		AND DATEPART(hh, startdate) < tmStopHour

tmYear skall exempelvis vara 2008, tmMonth skall vara 5 och tmStartHour skall vara 7 och tmStopHour 23.

Då får du med alla poster för en viss månad och år som postats mellan 07:00 och 22:59:59. Du får alltså inte med 23:00.

devotionMedlem sedan jan. 20013 582 inlägg
#3

Ok, nu har jag testat så här:

SELECT COALESCE(SUM(tblTime.[Time]),0) AS Hours FROM tblcustomer 
INNER JOIN tblTask ON tblCustomer.[Nr] = tblTask.CustomerNr 
LEFT JOIN tblTime ON tblTask.[Id] = tblTime.TaskId 
LEFT JOIN tblTimeType ON tblTimeType.[Id] = tblTime.TimeTypeId 
WHERE tblCustomer.Category = 'Sigtuna' 
And tblTime.StartDate >='2008-05-01 00:00:00.000' '
And tblTime.StartDate < '2008-05-31 23:59:59.999' 
And DATEPART(hh, tblTime.StartDate) >= '16' 
And DATEPART(hh, tblTime.StartDate) < '23' 
And [tblTimeType].[Name] LIKE '01. Personlig omvårdnad'

Det "verkar" ju fungera...

Men...

Hur gör jag omd et ska vara 16:30, vilket det ska vara... (vilket jag inte skrev i första inlägget...)

och, måste man tänka på något när det gäller WHERE-delen. Typ paranteser...

Mvh
Henrik

LarsGMedlem sedan dec. 200012 464 inlägg
#4
where convert(varchar(8),startDate,8) between '16:30:00' and '23:00:00'
devotionMedlem sedan jan. 20013 582 inlägg
#5

Funkish perfektos... :)

127 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)