webForumDet fria alternativet

Jämförelse, år

Databaser & SQL

2 svar · 266 visningar · startad av Moppan

Medlem sedan okt. 200257 inlägg
Frågan#1

Hallå!

Jag vill kolla om en person har rapporterat tid under ett år och testar därför ex om året är >2001 och <2002. Problemet är att jag tar emot det valda året som en parameter av typen smalldatetime. Jag vill sedan få ut året som kommer därefter (genom att plussa på ett, eller något annat smart). Hur ska jag göra med konverteringar och dyl. för att det ska fungera??!

Tips???
Koden ser just nu ut såhär:

CREATE PROCEDURE spTime_GetAllPersonsByDate
@Date smalldatetime
AS

SELECT DISTINCT P.PersonID, P.FirstName, P.LastName
FROM TimePerDayAndProject TP
INNER JOIN Person P ON P.PersonID = TP.PersonID
WHERE datepart(yyyy, TP.DateField) >= @Date AND datepart(yyyy, DateField) <= @Date + 1
ORDER BY FirstName

GO

Medlem sedan okt. 200257 inlägg
#2

Jag behöver ingen hjälp...

Gjorde bara om så att jag tar emot året som en integer istället.. Förstår inte hur man kan göra en jämförelse mot datepart(yyyy, DateField) som är av typen smalldatetime dock..

men men.....

Medlem sedan dec. 200012 464 inlägg
#3

Funktionen datepart returnerar ett numeriskt värde så det går bra att jämföra. Om du vill lägga till ett år till ett datum så får du använda funktionen dateadd.

248 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)