webForumDet fria alternativet

Mellan datum som ligger över flera dygn

Databaser & SQL

2 svar · 479 visningar · startad av devotion

Medlem sedan jan. 20013 582 inlägg
Frågan#1

Hej!

Jag har en SQL-fråga enligt nedan:

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 = 'Administratör' 
And tblTime.StartDate >='2008-05-01 00:00:00.000' 
And tblTime.StartDate < '2008-05-31 23:59:59.999' 
And CONVERT(varchar(8),tblTime.StartDate,8) BETWEEN '23:30:00' and '07:29:00' And [tblTimeType].[Name] LIKE '01. Personlig omvårdnad'

Den fungerar ju bra, om tidsintervallet ligger mellan t.ex 16:00 och 23:30. Men hur gör man i ovanstående fall, där tidsintervallet ligger över två dygn (23:30 -- 07:29)

Mvh
Henrik

Medlem sedan juni 20008 205 inlägg
#2

Du får göra två villkor.

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 = 'Administratör' 
And tblTime.StartDate >='2008-05-01 00:00:00.000' 
And tblTime.StartDate < '2008-05-31 23:59:59.999' 
And ( 
    CONVERT(varchar(8),tblTime.StartDate,8) BETWEEN '23:30:00' and '23:59:59'
    OR CONVERT(varchar(8),tblTime.StartDate,8) BETWEEN '00:00:00' and '07:29:59'
)
And [tblTimeType].[Name] LIKE '01. Personlig omvårdnad'
Medlem sedan jan. 20013 582 inlägg
#3

aha.. :)

261 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)