Invloed van factor tijd in datetime
Wanneer je in een database een datum veld hebt, kan dit veld twee types hebben: date of datetime. Als het veld het type ‘date’ heeft dan wordt alleen de datum opgeslagen. Wanneer het veld het type ‘datetime’ heeft, dan wordt zowel de datum als de tijd opgeslagen. Als je bepaalde gegevens uit een database wilt selecteren die bij een bepaald jaartal horen en het datumveld heeft het type ‘datetime’, dan speelt de factor tijd een rol.
Open SQL Server Management Studio. We willen uit de tabel TestTabel het ID, Naam en Datum selecteren waarbij het jaartal 2014 is. Om deze gegevens uit 2014 te selecteren gebruiken we onderstaande SQL query.
[sql]
SELECT *
FROM TestTabel
WHERE Datum > ‘2014-01-01 00:000:00.000’
AND Datum < ‘2015-01-01 00:000:00.000’
[/sql]
In de WHERE clause selecteren we het jaartal 2014. Het datumveld moet groter of gelijk zijn aan 01-01-2014 waarbij de tijd 00:00:00 uur is. Op deze manier selecteren we het begin van 2014. Let op dat je de datum notatie in de juiste volgorde zet zoals dat in de database staat (in dit geval yyyy-mm-dd). Vervolgens selecteren we het einde van 2014. Het datumveld moet kleiner zijn dan 01-01-2015 om 00:00:00 uur. Dit is namelijk het eerste moment van het jaar 2015. Onderstaand zie je het resultaat van de query.
Je kunt ook de tijd weglaten in de WHERE clause. Dit levert hetzelfde resultaat op. De tijd wordt door SQL Server dan geïnterpreteerd als 00:000:00.000.
FROM TestTabel
WHERE Datum > ‘2014-01-01’
AND Datum < ‘2015-01-01’
[/sql]
Wat je niet als eind van het jaar kunt gebruiken is: ‘Datum <= 2014-12-31 00:000:00.000’. Wanneer je dit gebruikt als eind van het jaar, worden de resultaten die wel in 2014 horen maar die een tijd hebben na 00:00:00 uur op 31-12-2014 niet getoond. Op deze manier wordt 31 december niet meegenomen in de selectie.
[sql] SELECT *
FROM TestTabel
WHERE Datum > ‘2014-01-01 00:000:00.000’
AND Datum <= ‘2014-12-31 00:000:00.000’
[/sql]
Onderstaand zie je het resultaat. De rij met Naam Tanja Breukelen wordt nu niet meer getoond.
Zelf proberen
Wil je zelf experimenteren met deze dataset? Gebruik dan onderstaande SQL query’s om de dataset te maken. Je kunt de code kopiëren en plakken.Tabel maken:
[sql]
CREATE TABLE TestTabel
(
ID INT NOT NULL,
Naam CHAR(30),
Datum DATETIME
)
[/sql]
Tabel vullen:
[sql]
INSERT INTO TestTabel (ID, Naam, Datum)
VALUES (1, ‘Jan Huisman’, ‘2014-09-05 09:58:22.000’),
VALUES (2, ‘Hans Bouwhuis’, ‘2014-05-04 14:27:57.153’),
VALUES (3, ‘Tanja Breukelen’, ‘2014-12-31 07:034:00.000’)
[/sql]
Geef een reactie