Gegevens opslaan uit de database tussen twee data
Ik heb een klein probleem met mijn SQL Query op een MS SQL Server waar ik gisteren full-time mijn nek over brak, zodoende kijk ik even rond of jullie mij kunnen helpen.
In de eerste instantie probeerde ik om een paar records op te halen uit de database, ik wil in kaart brengen hoe vaak computers worden gebruik in een klaslokaal tussen verschillende datums. Dus ik probeerde het eerst met de volgende query.
Quote:
SELECT
*
FROM
InlogLog as il
INNER JOIN
ComputerIdentity as ci
ON il.Computer = ci.Description
WHERE ci.Location
LIKE 'E18%'
AND ci.MakeModelID = 9
AND il.Datum = '2016-06-17 09:57:00.000'
*
FROM
InlogLog as il
INNER JOIN
ComputerIdentity as ci
ON il.Computer = ci.Description
WHERE ci.Location
LIKE 'E18%'
AND ci.MakeModelID = 9
AND il.Datum = '2016-06-17 09:57:00.000'
Als ik deze query uitvoer krijg ik een foutmelding, dat de il.Datum die ik opgeef gezien wordt als een varchar, terwijl SQL een DATETIME verwacht. De foutmelding staat hieronder
Quote:
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
Toen ik zelf even zocht naar een manier om dit op te lossen kwam ik achter de DATEPART functie. Deze functie heb ik uitgeprobeerd, maar biedt niet de ondersteuning om records tussen verschillende datums te zoeken. Toen had ik dit voor elkaar gekregen:
Quote:
SELECT
*
FROM
InlogLog as il
INNER JOIN
ComputerIdentity as ci
ON il.Computer = ci.Description
WHERE ci.Location
LIKE 'E18%'
AND ci.MakeModelID = 9
AND DATEPART(YY,il.Datum) = 2016
AND DATEPART(MM,il.Datum) = 10
AND DATEPART(DD,il.Datum) = 03
ORDER BY il.Computer
*
FROM
InlogLog as il
INNER JOIN
ComputerIdentity as ci
ON il.Computer = ci.Description
WHERE ci.Location
LIKE 'E18%'
AND ci.MakeModelID = 9
AND DATEPART(YY,il.Datum) = 2016
AND DATEPART(MM,il.Datum) = 10
AND DATEPART(DD,il.Datum) = 03
ORDER BY il.Computer
Mijn kennis houdt hier verder op, heeft iemand van jullie een idee? (Hieronder staat een kleine ERD, hoe de relaties staan aangegeven)
Alvast bedankt voor de hulp!
Toevoeging op 04/10/2016 10:23:04:
Reeds op kunnen lossen met
SELECT
COUNT(*)
FROM
InlogLog as il
INNER JOIN
ComputerIdentity as ci
ON il.Computer = ci.Description
WHERE ci.Location
LIKE 'E18%'
AND ci.MakeModelID = 9
AND il.Datum >= (GETDATE()-7) AND il.Datum <= GETDATE();
DATAPART bestaat niet. Het is de omschrijving van het datum/tijddeel dat je wilt hebben.
ipv DATAPART() gebruik je YEAR(), MONTH() en DAY().
Datum- en tijdfuncties staan in de handleiding beschreven.
Gewijzigd op 04/10/2016 10:48:52 door Adoptive Solution