In datawarehouseland gebruiken we in onze DimDatum integers als primaire sleutels. Vaak komt het voor dat we een DateTime value moeten omzetten naar een integer om een join te kunnen maken met de DimDatum tabel. Dit kan met het volgende T-SQL Statement:

YEAR(<>)*10000+MONTH(<>)*100+DAY(<>) AS DateTimeToInteger

In <> zet je uiteraard de kolom die een datetime value bevat.

En andersom is ook weleens handig! Hier de functie:

CREATE FUNCTION [dbo].[FromDateIDtoDateValue](@Date varchar(8))
RETURNS datetime
AS
------------------------------------------------------------------------------
-- FromDateIDtoDateValue
-- To Translate a YYYYMMDD date to a valid datetime
-- Returning 00000000 as a NULL value

BEGIN
-- Declare the return variable here
DECLARE @FunctionResult datetime

IF isdate(@Date) = 1 SET @FunctionResult = cast(@Date as datetime)
Else SET @FunctionResult = null


RETURN(@FunctionResult)
END