Conversie van datetime naar date in SQL

Door Rachelle Blok
In SQL
1 juni 2014
0 Reacties
4197 Views

In SQL Server kun je een datumveld met type ‘datetime’ omzetten naar type ‘date’. Bij het type date wordt alleen de datum opgeslagen in de database, terwijl bij het type datetime zowel de datum als de tijd worden opgeslagen. We gebruiken onderstaande tabel met een kolom ‘Datum’ die het type datetime heeft.

Conversie DateTime Date SQL
Open SQL Server Management Studio. Om een datumveld om te zetten naar type date kun je onderstaande SQL query gebruiken. Het type date bestaat sinds SQL Server 2008. We gebruiken de functie CAST in de SELECT statement voor de conversie van datetime naar date. Vervolgens geven we de nieuwe kolom een naam door middel van AS <kolomnaam>.

[sql] SELECT Datum AS DatumTijd,
CAST (Datum as Date) as Datum
FROM TestTabel
[/sql]

Als resultaat zien we de oude kolom ‘DatumTijd’ met het type datetime en de nieuwe kolom ‘Datum’ met type date.

Conversie DateTime Date SQL
Tot en met SQL Server 2005 bestond het type date nog niet. Toch is het in deze versie ook mogelijk om in een datumveld de tijd niet mee te nemen. De eerste stap is om de datum om te zetten naar een getal. Iedere datum heeft een bepaald getal. In SQL Server wordt het getal berekend door het verschil in het aantal dagen te berekenen tussen de datum en 01-01-1900. Omdat in het type datetime ook de tijd wordt opgeslagen kan er een decimaal getal ontstaan. Het kan bijvoorbeeld zijn dat de tijd 12:00 uur is waardoor je op de helft van de dag bent. Er wordt dan 0,5 aan het getal toegevoegd. Daarom zetten we de datum om naar het type float. Hiervoor gebruiken we onderstaande query.

[sql] SELECT Datum AS DatumTijd,
CAST (Datum AS Float) AS Datum
FROM TestTabel
[/sql]

Onderstaand zie je het resultaat.

Conversie DateTime Date SQL
Vervolgens ronden we het getal af naar beneden zodat de tijd niet meer wordt meegenomen in het getal. Hiervoor gebruiken we de functie FLOOR. Dit doen we met onderstaande query.

[sql] SELECT Datum AS DatumTijd,
FLOOR(CAST( Datum AS Float)) AS Datum
FROM TestTabel
[/sql]

Onderstaand zie je het resultaat. Er zijn nu alleen nog hele getallen.
Conversie DateTime Date SQL
Vervolgens zetten we het getal weer om naar type datetimeHiervoor gebruiken we de functie CAST en gebruiken we AS <type> met als type datetime. Onderstaand zie je de uiteindelijke query.

[sql] SELECT Datum AS DatumTijd,
CAST (FLOOR(CAST( Datum AS Float)) AS Datetime) AS Datum
FROM TestTabel
[/sql]

Dit is het resultaat. Bij iedere datum staat de tijd nu op 00:00:00.000.

Conversie DateTime Date SQL

Zelf proberen

Wil je zelf experimenteren met de dataset? Gebruik dan onderstaande SQL queries. Je kunt de queries kopiëren en plakken.

Tabel maken:
[sql] CREATE TABLE TestTabel
(
ID INT NOT NULL,
Datum DATETIME
)
[/sql]

Tabel vullen:
[sql] INSERT INTO TestTabel (ID, Datum)
VALUES (1, ‘2014-09-05 09:58:22.000’),
VALUES (2, ‘2014-05-04 14:27:57.153’),
VALUES (3, ‘2014-12-31 07:034:00.000’)
[/sql]

Over "" Heeft 37 Posts

Rachelle Blok studeert Data Science en schrijft blogartikelen voor ReportingBLOG, over verschillende tools zoals Excel, SQL Server en Crystal Reports. Rachelle heeft daarnaast een eigen bedrijf in webdesign.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *