Gebruik nu al denali datumfuncties

De nieuwste versie van SQL server, nu nog bekend als 'Denali', heeft een aantal nieuwe datumfuncties. Veel van deze functies zijn door vele mensen al zelf gebouwd, maar nu zijn ze dus eindelijk onderdeel van SQL. Om de SQL code al vast beschikt te maken voor denali, heb ik een aantal van deze datumfuncties geschreven voor eerdere SQL versies. Daarbij heb ik de naamgeving van de functie alsmede de parameters al gelijk gehouden met de denali versie. (gebaseerd op CTP3) Ook heb ik enkele aanvullende datumfuncties gemaakt, gebaseerd op verzoeken van gebruikers (aan Microsoft). Mogelijk komen deze functies is een toekomstige SQL versie...

warning.png
De scripts zijn gebaseerd op documentatie voor SQL Denali CTP3. In de definitieve versie kan zowel de naamgeving als de werking verschillend zijn. Controleer dit voordat dit script wordt toegepast. Uiteraard moeten de onderstaande functies die Denali zelf levert niet in een Denali omgeving geinstalleerd worden

De datumfuncties

NB: de functies met een (*) zijn dus functies die niet standaard in Denali worden meegeleverd
Er zijn 2 versies van dit script, een SQL 2K5 versie, die gebruik maakt van datatype DATETIME en een 2K8 versie, die gebruik maakt van datatype DATE

EOMONTH(@start_date, @month_to_add)
Deze functie toont de laatste dag van de maand van parameter @start_date. De datum kan dynamisch veranderen door de parameter @month_to_add te voorzien van een waarde. In dat geval wordt deze waarde toegevoegd als aantal maanden aan @start_date
Als het nu dus de maand september is en de functie wordt aangeroepen als select EOMONTH(CURRENT_TIMESTAMP,1) dan wordt de laatste dag van de oktober getoond
BOMONTH(@start_date, @month_to_add)*
Deze functie toont de eerste dag van de maand van parameter @start_date. De datum kan dynamisch veranderen door de parameter @month_to_add te voorzien van een waarde. In dat geval wordt deze waarde toegevoegd als aantal maanden aan @start_date
Als het nu dus de maand september is en de functie wordt aangeroepen als select BOMONTH(CURRENT_TIMESTAMP,1) dan wordt de eerste dag van de oktober getoond
DIMONTH(@start_date, @month_to_add)*
Deze functie toont het aantal dagen in een maand. De datum kan dynamisch veranderen door de parameter @month_to_add te voorzien van een waarde. In dat geval wordt deze waarde toegevoegd als aantal maanden aan @start_date
Als het nu dus de maand september is en de functie wordt aangeroepen als select DIMONTH(CURRENT_TIMESTAMP,1) dan wordt het aantal dagen van oktober getoond
BOWEEK(@start_date, @month_to_add)*
Deze functie toont de eerste dag van de week van parameter @start_date. De datum kan dynamisch veranderen door de parameter @week_to_add te voorzien van een waarde. In dat geval wordt deze waarde toegevoegd als aantal weken aan @start_date
EOWEEK(@start_date, @month_to_add)*
Deze functie toont de laatste dag van de week van parameter @start_date. De datum kan dynamisch veranderen door de parameter @weeek_to_add te voorzien van een waarde. In dat geval wordt deze waarde toegevoegd als aantal weken aan @start_date
DATEFROMPARTS(@year int, @month int, @day int)
Deze funtie bouwt een DATE variabele op a.h.v. meegegeven parameters.
DATETIMEFROMPARTS