sql server - datepart function not working in sql azure -
i want split date part year , assign variable in stored procedure. run stored procedure in sql azure. throws error "reference database and/or server name in 'master..spt_values' not supported in version of sql server."
code:
declare @year int set @year =datepart(yyyy,getdate()) create table #sundaydates (sunday datetime,nextsunday datetime) insert #sundaydates(sunday,nextsunday) select max(dates),max(dateadd(dd,+7,dates)) last_sunday ( select dateadd(day,number-1,dateadd(year,@year-1900,0)) dates master..spt_values type='p' , number between 1 , datediff(day,dateadd(year,@year-1900,0),dateadd(year,@year-1900+1,0)) ) t datename(weekday,dates)='sunday' group dateadd(month,datediff(month,0,dates),0)
this query gives same results (as result set, rather inserting temp table, can adapted so) , doesn't rely on spt_values table error message tells you isn't allowed:
;with numbers (num) ( select 0 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9 union select 10 union select 11 ), monthends ( select dateadd(month,datediff(year,'20010101',current_timestamp)*12 + n.num,'20010131') enddate numbers n ), lastsundays ( select dateadd(day,-n.num,enddate) enddate monthends me cross join numbers n n.num between 0 , 6 , datepart(weekday,dateadd(day,-n.num,enddate)) = datepart(weekday,'20130512') ) select enddate,dateadd(day,7,enddate) followingsunday lastsundays
Comments
Post a Comment