webForumDet fria alternativet

Matematiskutmaning

Databaser & SQL

3 svar · 249 visningar · startad av aleborg

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

Jag har en tabell som har följande fält:

ID - int
Period - int
Created -datetime
+ ett antal ointressanta fält till

Jag vill genom att skicka in t ex 2005-01-01(dvs januari 2005) få ut alla vars datum(Created) matchar med Perioden på 2005-01
t ex Period: 3 och Created: 2004-07 blir 2005-01(men även 2004-10, 2005-04), Period: 24 och Created: 2003-01 blir 2005-01 osv.

Hur ska SQL-frågan se ut?

Medlem sedan jan. 20013 341 inlägg
#2

Just nu ser koden ut så här:

			SELECT ID,ProductID,AccountNamesID,UserID,ServerID,Article,[Name],Description,Period,Qty,Price,Created,Ended FROM ServiceItems
			WHERE     (Period <> 0)  AND UserID=@userid AND ((Period = 1) OR
                      (Period * 2 = DATEDIFF(mm, Created, @month)) OR
                      (Period * 3 = DATEDIFF(mm, Created, @month)) OR
                      (Period = DATEDIFF(mm, Created, @month)))

Nån som kan se om den kommer att missa nått?

Medlem sedan dec. 200012 464 inlägg
#3
 SELECT ID,ProductID,AccountNamesID,UserID,ServerID,Article,Name,
   Description,Period,Qty,Price,Created,Ended 
FROM ServiceItems
WHERE Period <> 0
  AND UserID = @userid 
  AND DATEDIFF(mm, Created, @month) % period = 0
Medlem sedan jan. 20013 341 inlägg
#4

Klockrent :D
Satt i natt och var inne på samma sak men var för trött för att fatta att det var mod jag skulle använda! :e

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