5

以下の 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)
4

3 に答える 3

11

文字列に含めているため、@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)、最初に設定したのと同じ形式で日付を残します。

SQL Serverで日時と日付をフォーマットする方法

于 2012-05-09T14:06:16.207 に答える
1

@ddtime 変数のデータ型を varchar に変更します。varchar と datetime を連結しようとしています。

于 2012-05-09T14:06:54.787 に答える
0

あなたのddtimeはdatetimeです

文字列に連結することはできません。

変化する

set @sql = 'select * from table1 where tdate='''+cast ( @ddtime as nvarchar(100))+''''

また

への変更

Declare @ddtime nvarchar(100)
于 2012-05-09T14:08:32.017 に答える