Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
| Author |
Topic |
|
kurtgr
Starting Member
25 Posts |
Posted - 2009-09-29 : 13:00:38
|
| Hi guys I am having a problem I am pass variable to the datediff function but i am getting this errorMsg 295, Level 16, State 3, Line 11Conversion failed when converting character string to smalldatetime data type.Below is the code i am using declare @LifeSpan TINYINT, @Period CHAR(6), @Amount REAL, @Cost MONEY, @AssetPackageId INT, @sql varchar(150),@TimeOfIssue SMALLDATETIMESET @LifeSpan = 3SET @TimeOfIssue = getdate()SET @Period = 'MONTH'SET @AssetPackageId = 2 SET @Sql = 'SELECT @DateDiff = DATEDIFF('+@Period+','+@TimeOfIssue+',GETDATE())'select @sqlexec(@sql)Can someone assist me in saying or showing what am i do wrongThanks in advance |
|
|
jimf
Master Smack Fu Yak Hacker
2875 Posts |
Posted - 2009-09-29 : 13:12:48
|
| You are building a sql string, but you are trying to concatenate a string(@period) with a datetime(@timeOfIssue). Try this SET @Sql = 'DECLARE @DateDiff intSELECT @DateDiff = DATEDIFF('+@Period+','+''''+convert(varchar(50),@TimeOfIssue)+''''+',GETDATE()) 'JimEveryday I learn something that somebody else already knew |
 |
|
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2009-09-29 : 13:14:31
|
| you cant return values like this in dynamic sql using EXEC. you need to use sp_executesql.whats the purpose of dynamic sql here?. |
 |
|
|
kurtgr
Starting Member
25 Posts |
Posted - 2009-09-29 : 13:18:36
|
| Thanks very much it worked |
 |
|
|
madhivanan
Premature Yak Congratulator
22864 Posts |
Posted - 2009-09-30 : 02:13:31
|
| In fact, you van avoid dynamic sql in this casedeclare @LifeSpan TINYINT, @Period CHAR(6), @Amount REAL,@Cost MONEY, @AssetPackageId INT,@sql varchar(150),@TimeOfIssue SMALLDATETIMESET @LifeSpan = 3SET @TimeOfIssue = getdate()SET @Period = 'MONTH'SET @AssetPackageId = 2IF @Period = 'MONTH'SELECT @DateDiff = DATEDIFF(MONTH,@TimeOfIssue,GETDATE())MadhivananFailing to plan is Planning to fail |
 |
|
|
|
|
|
|
|