我猜這是不可能的,因爲引擎不喜歡它,但是有沒有一種方法(禁止動態SQL)將DATEPART
作爲參數傳遞給過程?DATEPART作爲參數
12
A
回答
10
一種選擇是使用CASE與參數(最好使用int枚舉而不是字符串):
declare @part varchar(10)
set @part = 'YEAR'
select case @part
when 'YEAR' then datepart(yy, SomeDateTimeColumn)
when 'MONTH' then datepart(mm, SomeDateTimeColumn)
else datepart(dd, SomeDateTimeColumn)
end
from SomeTable
1
爲什麼你不能只傳入從Datepart創建的日期?
DECLARE @datepart DATETIME
SET @datepart = DATEPART(yyyy, GetDate())
exec spName @datepart
2
不。沒有「年」數據類型。你可以這樣做:
CREATE PROC myproc @Year int, @Month tinyint
失敗的原因是DATEPART部分是文字
DECLARE @part varchar(10)
SET @part = 'month'
SELECT DATEPART(@part, GETDATE());
或本和IF ELSE
CREATE PROC myproc @WhoeDate datetime, @part varchar(10) /* year. month etc*/
0
如果您嘗試創建動態存儲過程,則可以通過以下代碼來幫助您實現此目的。
當你定義SP的身體,記住,你需要使用EXEC SQL鍵字來執行SQL語句:
create proc sp_dinamic_procedure(@datepart_sql varchar(20), @datepart_var varchar(8))
as
begin
declare @query varchar(100)
select @query = "select date from table1 t1 where datepart(" + @datepart_var + ", t1.fecha1) = " + @datepart_sql
exec @query
end
然後,你可以通過任何SQL語句到你的存儲過程作爲一個您的需要單個字符串dependig:
declare @datepart_sql varchar(20), @datepart_var varchar(8)
select @datepart_sql = "datepart(year,getdate()", @datepart_var = "year"
exec sp_dinamic_procedure @datepart_sql, @datepart_var
0
最好的解決辦法是(如果你需要它在該級別甚至幾天),以隨時添加個月,並與整數值玩。事情是這樣的
DECLARE @AddMonths INT = 12
SELECT
Sales_DateTime, DATEADD(DAY, -1, DATEADD(MONTH, @AddMonths, DATEADD(DAY, 1, Sales_DateTime)))
FROM tSales
,我想很明顯如何一個月只添加:)
相關問題
- 1. 帶一個參數的SAS/Oracle SQL DATEPART()
- 2. DATEPART IN SELECT CASE不工作
- 3. 爲什麼datepart提取小時數不起作用?
- 4. 關於DATEPART日期函數
- 5. 作爲參數
- 6. 作爲參數
- 7. ?作爲參數
- 8. 將參數作爲參數運行CLI作爲參數的參數
- 9. 參數作爲參考?
- 10. SAS SQL Datepart函數返回奇數值
- 11. GroupBy Datepart函數缺少數據
- 12. DataChangeEventArgs作爲參數
- 13. PHP:Url作爲參數
- 14. Lambda作爲參數
- 15. HttpSessionState作爲參數
- 16. 叉()作爲參數
- 17. Java - 作爲參數
- 18. 類作爲參數
- 19. 作爲參數的PHP函數參數
- 20. Datepart周Sql(以53周爲一年)
- 21. 功能作爲參數與功能指針作爲參數
- 22. 作爲參數的函數
- 23. 與數組作爲參數
- 24. 與函數作爲參數
- 25. 與數組作爲參數
- 26. 數組作爲參數
- 27. 函數作爲參數
- 28. 將Curl參數作爲參數傳遞
- 29. 布爾作爲參數/參數?
- 30. varargs參數作爲類型參數?
很好的想法,我想你是我的答案;然而,我想通過'年'或'月',而不是某些*表面上*任意日期。 – Brad 2010-10-15 15:47:34