안녕하세요. 간단한 쿼리 질문인데요
아래와 같은 형식으로 쿼리를 짜서 While문을 돌리려고 하는데요
한번 출력 후 1일씩 증가된 결과를 출력하는..
While문 추가하지 않은 상태에서 쿼리를 실행하면
스칼라 변수 "@StartDateTime"을(를) 선언해야 합니다.
라고 나옵니다.
원인좀 알려주시면 감사하겠습니다.
감사합니다!
DECLARE @StartDate date
DECLARE @StartDateTime datetime, @EndDateTime datetime
DECLARE @sql char(100)
SET @StartDATE = '2016-12-01'
SET @StartDateTime = CONVERT(DATETIME, CONCAT(@StartDate, ' ', '00:00:00'))
SET @EndDateTime = CONVERT(DATETIME, CONCAT(@StartDate, ' ', '23:59:59'))
SET @sql = 'SELECT * FROM TableA WHERE timestamp between @StartDateTime and @EndDateTime'
EXEC (@sql)
SET @StartDate = DATEADD (DAY, 1, @StartDate)
Comment 5
-
건우아빠
2017.02.05 20:24
SET @sql = 'SELECT * FROM TableA WHERE timestamp between ''' +convert(varchar, @StartDateTime) +'''and+'''+ convert(varchar,@EndDateTime ) +'''' -
tempest
2017.02.05 21:08
오 감사합니다!
따옴표는 봐도봐도 어렵네요..
-
처리짱
2017.02.06 11:38
따옴표를 넣어야 하는 자리에 char(39)를 넣으면 그나마 보기가 좀 편합니다 ;;;
지극히 개인적일수 있지만요 ㅠ
'between ' + char(39) + convert(varchar, @StartDateTime) + char(39) + ' and ' + char(39) + convert(varchar,@EndDateTime ) + char(39)
-
항해자™
2017.02.08 13:25
저 쿼리라면 굳이 동적 쿼리를 사용할 필요가 잇나요?
그냥 실행해도 되는게 아닌가요?
-
항해자™
2017.02.08 13:31
굳이 동적쿼리를 사용해야 한다면, 아래와 같은 방법이 나을 듯 합니다.set @vSQL = ' select * from TableA where timestamp between @StartDateTime and @EndDateTime'; exec sp_executesql @vSQL , N'@StartDateTime datetime , @EndDateTime datetime' , @StartDateTime , @EndDateTime;