以下の SQL をストア プロシージャで実行すると、なんらかの理由で varchar にキャストできないため、変換エラーが発生します。
Declare @sql varchar(100)
Declare @ddtime datetime
set @ddtime = '2012-02-03 22:14:50.057'
set @sql = 'select * from table1 where tdate='+@ddtime
exec(@sql)
以下の SQL をストア プロシージャで実行すると、なんらかの理由で varchar にキャストできないため、変換エラーが発生します。
Declare @sql varchar(100)
Declare @ddtime datetime
set @ddtime = '2012-02-03 22:14:50.057'
set @sql = 'select * from table1 where tdate='+@ddtime
exec(@sql)
文字列に含めているため、@ddtime
をに変換する必要があります。varchar
Declare @sql varchar(100)
Declare @ddtime datetime
set @ddtime = '2012-02-03 22:14:50.057'
set @sql = 'select * from table1 where tdate= '''+ convert(nvarchar(25), @ddtime, 121) + ''''
exec(@sql)
または、あなた@ddtime
を のvarchar
代わりにとして持ってくださいdatetime
。
Declare @ddtime varchar(25)
はconvert(varchar(25), @ddtime, 121)
、最初に設定したのと同じ形式で日付を残します。
@ddtime 変数のデータ型を varchar に変更します。varchar と datetime を連結しようとしています。
あなたのddtimeはdatetimeです
文字列に連結することはできません。
変化する
set @sql = 'select * from table1 where tdate='''+cast ( @ddtime as nvarchar(100))+''''
また
への変更
Declare @ddtime nvarchar(100)