Home All Groups Group Topic Archive Search About

variable for DateAdd datapart constant

Author
20 Jan 2006 3:04 PM
WCL
Can DateAdd accept the datepart parameter as a variable?

e.g

declare @start_date datetime
declare @end_date datetime
declare @adjustment int
declare @adjustment_units ???

-- set the input values --

set @end_date = DataAdd(@adjustment_units, @adjustment, @start_date)

Author
20 Jan 2006 6:08 PM
Mark Williams
Not really, but since the number of possibilities for the date part is
reasonably small, you could do something like this

CREATE FUNCTION customDateAdd (@datepart varchar(10), @inc int, @basedate
datetime)
RETURNS datetime
AS
BEGIN

DECLARE @dateout datetime
SELECT @dateout =
  CASE
    WHEN @datepart = 'year' THEN DATEADD(YEAR, @inc, @basedate)
    WHEN @datepart = 'quarter' THEN DATEADD(quarter, @inc, @basedate)
    WHEN @datepart = 'month' THEN DATEADD(month, @inc, @basedate)
    WHEN @datepart = 'dayofyear' THEN DATEADD(dayofyear, @inc, @basedate)
    WHEN @datepart = 'day' THEN DATEADD(day, @inc, @basedate)
    WHEN @datepart = 'week' THEN DATEADD(week, @inc, @basedate)
    WHEN @datepart = 'hour' THEN DATEADD(hour, @inc, @basedate)
    WHEN @datepart = 'minute' THEN DATEADD(minute, @inc, @basedate)
    WHEN @datepart = 'second' THEN DATEADD(second, @inc, @basedate)
    WHEN @datepart = 'millisecond' THEN DATEADD(millisecond, @inc, @basedate)
  END
RETURN @dateout
END

declare @datepart varchar(10)
declare @inc int
declare @basedate datetime
set @datepart = 'hour'
SET @inc = 3
SET @basedate = '20060115'
SELECT dbo.customDateAdd(@datepart,@inc,@basedate)


Show quote
"WCL" wrote:

> Can DateAdd accept the datepart parameter as a variable?
>
> e.g
>
> declare @start_date datetime
> declare @end_date datetime
> declare @adjustment int
> declare @adjustment_units ???
>
> -- set the input values --
>
> set @end_date = DataAdd(@adjustment_units, @adjustment, @start_date)
>
>
>

AddThis Social Bookmark Button