2013-03-04 11 views
0

я следующие операторы SQLпочему это происходит в SQL

declare @date varchar(20) 
declare @query NVARCHAR(MAX) 

set @date= '2013-1-1' 
set @query= 'print '[email protected]+'' 
execute (@query) 

РМКО получения ответа на вопрос 2011 не как 2013-1-1 .. , почему это происходит. что нужно сделать, чтобы получить ответ как 2013-1-1 вместо 2011 с использованием выполнения (@query) заявление

+1

Он вычитается .. 2013-1-1 = 2011 – asifsid88

+0

@ asifsid88 это правильно. но мне нужно получить 2013-1-1 таким образом (используя execute (@query)) – user1925921

ответ

3

Ваш запрос эффективно:

print 2013-1-1 

Вызванный:

'print '[email protected]+'' 

Если вы переписали свой SQL следующим образом:

print @data 

Вы получите значение для печати: 2013-1-1

Если вы обновили свой первоначальный запрос:

declare @date varchar(20) 
declare @query NVARCHAR(MAX) 

set @date= '2013-1-1' 
set @query= 'print '''[email protected]+'''' 
execute (@query) 

Это было бы то же самое, как написание:

print '2013-1-1' 
+0

У меня есть сложная проблема, я упростил проблему и задал вопрос. Мне нужно получить 2013-1-1, используя «print» + @ date + '' – user1925921

+0

@ user1925921 Я думаю, вы должны попробовать код, указанный в ответе, прежде чем комментировать. Другой вариант - присвоить значение «@ date» кавычками. Например: 'set @ date = '' '2013-1-1' '''. –

+0

@ user1925921 ваш запрос - это не что иное, как немного математики, когда вы его выполняете, и я не уверен, как мы можем помочь решить вашу сложную проблему, поскольку, по моему мнению, большинству людей это будет считаться довольно глупым вопросом. Без обид. – Phill

0

и можно попробовать, как это тоже .... это будет также дать и ответ

объявляют @date VARCHAR (20) объявить @query NVARCHAR (MAX)

set @ date = '2013-1-1' set @ query = 'print' '' + @ date + '' '' execute (@query)

Смежные вопросы