1

これが私のコードです:

DECLARE @1day AS VARCHAR(MAX), @sqlText AS NVARCHAR(MAX), @firstdate AS DATETIME

SET @firstdate = DATEADD(dd,-(DAY(GETDATE())-1),GETDATE()) 
SET @1day = CONVERT(VARCHAR(MAX), @firstdate, 103)

SET @sqlText = 'SELECT ' + 'Dummy' + ' AS ' + @1day

EXEC (@sqlText)

次のエラーが表示されます: [Err] 42000 - [SQL Server] '01' 付近の構文が正しくありません。

期待される結果は次のとおりです。

01/06/2013
==========
Dummy

手伝ってくれてありがとう。

4

2 に答える 2

1

両方を一重引用符で囲む必要がDummyあり@1dayます。そうしない@1dayと、列エイリアスの構文が正しくなくDummy、列名として解釈されます。

有効な SQL:

DECLARE @1day AS VARCHAR(MAX), @sqlText AS NVARCHAR(MAX), @firstdate AS DATETIME

SET @firstdate = DATEADD(dd,-(DAY(GETDATE())-1),GETDATE())
SET @1day = CONVERT(VARCHAR(MAX), @firstdate, 103)

SET @sqlText = 'SELECT ' + '''Dummy''' + ' AS ''' + CAST(@1day as nvarchar) + ''''

exec (@sqlText)
于 2013-06-20T06:46:40.933 に答える