语句拼接的时分当遇到日期变量

语句拼接的时候当遇到日期变量
declare @startDate datetime
declare @endDate datetime
declare @sql1 varchar(100)
declare @sql2 varchar(2000)

set @startDate='2014-07-01'
set @endDate='2014-07-21'
set @sql1 = ' select * from tableABC '
set @sql2 = ' where modiDate between @startDate and @endDate '

exec(@sql1+@sql2)

尝试换成
set @sql2 = ' where modiDate between ’+‘’‘+’@startDate and'+'''+‘and'+'''+' @endDate '+'''
提示类型转换问题,再尝试换成
set @sql2 = ' where modiDate between ’+'''+convert(varchar(10),@startDate,120)+'''+'AND'+'''+convert(varchar(10),@endDate,120)+'''
还是不通过,为什么呀!语句拼接的时分当遇到日期变量
------解决方案--------------------
declare @startDate datetime
declare @endDate datetime
declare @sql1 varchar(100)
declare @sql2 varchar(2000)

set @startDate='2014-07-01'
set @endDate='2014-07-21'
set @sql1 = ' select * from tableABC '
set @sql2 = ' where modiDate between '''+CONVERT(VARCHAR(10),@startDate,23)+''' and  '''+CONVERT(VARCHAR(10),@endDate,23) +''''

EXEC (@sql1+@sql2)