2013-05-10 52 views
0

我想分割日期部分像年,並將其分配給存儲過程中的變量。 我在sql azure中運行該存儲過程。它拋出錯誤「參考‘MASTER..spt_values’數據庫和/或服務器名稱在此版本的SQL Server不支持。」datepart函數不能在sql azure中工作

代碼:

declare @Year int 
SET @Year =DATEPART(YYYY,GETDATE()) 
create table #SundayDates (Sunday datetime,NextSunday datetime) 
INSERT INTO #SundayDates(Sunday,NextSunday) 
SELECT max(dates),MAX(DATEADD(DD,+7,dates)) AS last_sunday from 
(
    SELECT dateadd(day,number-1,DATEADD(year,@year-1900,0)) AS dates 
    FROM MASTER..spt_values WHERE type='p' and 
    number between 1 and DATEDIFF(day,DATEADD(year,@year-1900,0),DATEADD(year,@year-1900+1,0)) 
) as t 
WHERE DATENAME(weekday,dates)='sunday' GROUP BY DATEADD(month,datediff(month,0,dates),0) 
+0

向我們顯示您的代碼。 – GrandMasterFlush 2013-05-10 14:07:26

+0

SET @Year = DATEPART(YYYY,GETDATE())INSERT INTO #SundayDates(星期日,NextSunday) \t SELECT MAX(日期),MAX(DATEADD(DD,+ 7,日期))AS last_sunday從 \t( \t SELECT DATEADD(天,DATEADD(年,@年-1900,0)號碼-1) \t AS日期FROM MASTER..spt_values \t WHERE類型= 'p' 和號碼1個 \t DATEDIFF之間(日,DATEADD (年,@今年1900,0),DATEADD(年,@今年1900 + 1,0)) \t)爲t \t WHERE DATENAME(星期,日期)='週日 \t GROUP BY DATEADD(月,DATEDIFF(月,0,日期),0) – Jaswanth 2013-05-10 14:27:45

+0

聽起來好像和DATEPART沒什麼關係,只是這個函數調用恰好在錯誤發生的地方。但是如果沒有看到任何代碼,提供任何幫助都有點棘手。 – 2013-05-10 14:28:28

回答

0

該查詢給出了同樣的結果(結果集,而不是插入到一個臨時表,但可以很容易地適應這樣做),不依賴於spt_values表錯誤消息告訴你是不允許的:

;With Numbers (Num) as (
    select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all 
    select 6 union all select 7 union all select 8 union all select 9 union all select 10 union all select 11 
), MonthEnds as (
    select DATEADD(month,DATEDIFF(year,'20010101',CURRENT_TIMESTAMP)*12 + n.Num,'20010131') as EndDate 
    from Numbers n 
), LastSundays as (
    select DATEADD(day,-n.Num,EndDate) as EndDate 
    from 
     MonthEnds me 
      cross join 
     Numbers n 
    where 
     n.Num between 0 and 6 and 
     DATEPART(weekday,DATEADD(day,-n.Num,EndDate)) = DATEPART(weekday,'20130512') 
) 
select EndDate,DATEADD(day,7,EndDate) as FollowingSunday 
from LastSundays