2017-07-28 35 views
1

我的問題是與SQL Server 2008。如果我執行:ISOWeek錯誤2008

Select dbo.IsoWeek(Getdate()) 

我得到這個錯誤

消息4121,級別16,狀態1,行
無法找到列「dbo」或用戶定義的函數或聚合「dbo.IsoWeek」,或名稱不明確。

在另一個數據庫上運行相同的命令給了我預期的響應:「30」

有什麼原因呢?

+0

IsoWeek不是一個集成的sql函數afaik。也許你在其他數據庫中有一個用戶定義的函數? – MatSnow

+0

你說得對。同時,分析問題,我發現在另一個數據庫中的功能。 Tnx – byte00

回答

0

沒有內置在名爲ISOWeek SQL Server的功能,並您正在運行的查詢(它的工作)的數據庫中有一個名爲user defined function目前ISOWeek

語法,將工作從一個內置的,使用DATEPART功能是:

SELECT DATEPART(ISO_WEEK, GETDATE()) 

它將在寫作,即時間返回30如果你把它叫做:

SELECT DATEPART(ISO_week, '2017-07-28 00:00:00.000') 
+0

謝謝,羅布。我在數據庫中找到了Isoweek的功能。從現在開始,我將使用內置函數來避免這樣的未來情況。 – byte00

+0

byte00,很高興我可以幫助=)我的猜測是數據庫中的功能,它可以工作*可能*只是調用'DATEPART'! =) 如果您發現我的答案解決了您的問題,那麼在'stackoverflow(我看到您今天只創建了您的帳戶,歡迎!)'約定,點擊答案文本左邊的「打勾」標記爲「公認」。您也可以通過點擊答案右側的「0」上方的向上箭頭來提高答案的答案。鼓勵他們提供答案的這些「獎勵」人都是=) – Rob

+0

是的,它的確如此。如果有幫助,我可以在這裏發佈這個功能。我可以?我是這個論壇的新手,我不知道這裏有什麼規則。 – byte00