1

私はグーグルで検索しましたが、私のケースに一致するものは見つかりませんでした。

declare @from_ datetime, @to_ datetime
SET @from_ = '2013-01-01' 
SET @to_ = '2013-10-01' 

DECLARE @query NVARCHAR(4000) 
SET @query = N'
DECLARE @from datetime, @to datetime
SET @from = CAST('''+@from_+''' AS datetime)
SET @to = CAST('''+@to_+''' AS datetime)
'

エラーが発生します:

  Msg 241, Level 16, State 1, Line 34
Conversion failed when converting date and/or time from character string.

SET @query = N'34号線です

私もCONVERT(datetime, '+@from_+', 102)with と without を, 102)試してみました'''

そしてちょうど

SET @from = CAST('+@from_+' AS datetime)

同じ結果

ソリューションは PIVOT の一部であるため、@query を宣言、選択、ピボット、および実行します。datetime を実行するまで、残りのソリューションはうまく機能します。

4

3 に答える 3

2

あなたの問題は、varchar で datetime を追加していることです。代わりにこれを試してください:

declare @from_ char(8), @to_ char(8)
SET @from_ = '20130101' 
SET @to_ = '20131001' 

DECLARE @query NVARCHAR(4000) 
SET @query = N'
DECLARE @from datetime, @to datetime
SET @from = CAST('''+@from_+''' AS datetime)
SET @to = CAST('''+@to_+''' AS datetime)
'
于 2013-10-30T08:54:38.663 に答える
0

@from_よくわかりませんが、前後にアポストロフィ(')を追加したと思います@to_

SET @from = CAST('''+@from_+''' AS datetime)
SET @to = CAST('''+@to_+''' AS datetime)

また、このような値を直接設定しないのはなぜですか

SET @from = @from_
SET @to = @to_
于 2013-10-30T08:49:32.637 に答える
0

このように試してください

declare @from_ NVARCHAR(50), @to_ NVARCHAR(50)
SET @from_ = '2013-01-01' 
SET @to_ = '2013-10-01' 

DECLARE @query NVARCHAR(4000) 
SET @query = N'
DECLARE @from datetime, @to datetime
SET @from = CAST('''+@from_+''' AS datetime)
SET @to = CAST('''+@to_+''' AS datetime)'
EXEC SP_EXECUTESQL @query
于 2013-10-30T09:00:17.670 に答える