作为参数传递的值在sql server中不适用于datetime的内置函数

时间:2015-08-29 16:44:31

标签: sql sql-server-2008

DECLARE @GET DATETIME
SET @GET= GETDATE()
DECLARE @Val VARCHAR(10)
SET @Val='wk'

--SELECT DATEADD(@Type,2,@GET)

 SELECT DATEPART(wk,GETDATE())  -- WORKING

以上一行有效,但当我把它作为参数传递时,它无法正常工作。

 SELECT DATEPART(@val,GETDATE())  -- NOT WORKING

传递的间隔似乎是其他数据类型。

1 个答案:

答案 0 :(得分:0)

将其设为Dynamic Query

DECLARE @sql nvarchar(500)

DECLARE @Val VARCHAR(10)

 SET @Val='week'  --Quarter, Month

set @sql = 'SELECT DATEPART('+@val+',GETDATE())'

exec sp_executesql @sql

或者您可以使用此

If @val = 'Week'
SELECT DATEPART(Week,GETDATE())
Else If @val = 'Month'
SELECT DATEPART(Month,GETDATE())
....