• Increase font size
  • Default font size
  • Decrease font size
Home T-SQL Datetime-veld omzetten naar een Integer

Datetime-veld omzetten naar een Integer

E-mail Afdrukken
(1 stem)

data_field_config_128In Datawarehouseland gebruiken we in onze Datum-Dimensie integers als primaire sleutels voor de datum. Zo slaan we de datum "2008-12-01 00:00:00.000" op als  "20081201". Hierdoor kun je vanuit je feitentabel een snelle join leggen naar je datumdimensie, joins op integers gaan nou eenmaal sneller dan joins op datetime velden. 

Datums liggen in bronsystemen vaak opgeslagen in het DateTime-formaat. We zullen deze DateTime dus moeten converteren naar een integer. Dit kan met het volgende T-SQL Statement:

 SELECT YEAR(GETDATE())*10000+MONTH(GETDATE())*100+DAY(GETDATE()) AS DatetimeToInt
 





GETDATE() vervang je door het datumveld dat je wilt omzetten naar een integer.

Een andere methode is de volgende, deze is in de praktijk iets langzamer:
 SELECT CONVERT(VARCHAR,DATEADD(yy,-2, GETDATE()),112) 
 




Je kunt je ook voorstellen dat je dit veld weer wilt gebruiken als een normaal datumveld, bijvoorbeeld in een rapportage in Reporting Services. Dit kun je eenvoudig realiseren door onderstaande functie aan te maken:
 CREATE FUNCTION [dbo].[FromDateIDtoDateValue](@DATE VARCHAR(8))
 RETURNS DATETIME
 AS
 
 DECLARE @FunctionResult DATETIME
 
 IF ISDATE(@DATE) = 1 SET @FunctionResult = CAST(@DATE AS DATETIME)
 ELSE SET @FunctionResult = null
 
 RETURN(@FunctionResult)
 END 
 



Vervolgens kun je deze functie aanroepen:
 SELECT
 dbo.FromDateIDtoDateValue(20081201)
 

Copyright 2008. All Rights Reserved.

Bijlagen:
Download dit bestand (FromDateIDtoDateValue.sql)FromDateIDtoDateValue.sql[ ]1 Kb

Trackback(0)

TrackBack URI voor deze post

Commentaar (0)

RSS feed Commentaar

Schrijf commentaar

kleiner | groter
security image
Schrijf de volgende tekens

busy