|
database
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
variable for DateAdd datapart constantCan 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) 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) > > > |
|||||||||||||||||||||||