使用字符串

时间:2015-06-07 23:29:43

标签: sql sql-server sql-server-2008

我在尝试连接日期和字符串时遇到错误。

declare @select varchar(max) 
declare @where varchar(max)
set @select = 'select * from tbl Emp........'
@where = ' where Emp.date >='+ cast((cast(getdate() as date)) as varchar(20))
exec(@select+@where)

我也试着像下面这样做,但没有用:

declare @today varchar(20)
@today = cast((cast(getdate() as date))
@where = 'where Emp.date> =' + '@today'

1 个答案:

答案 0 :(得分:4)

尝试这样的事情......

declare @select varchar(max) 
declare @where varchar(max)
set @select = 'select * from tbl Emp '
set @where = ' where Emp.date >= ''' + CONVERT(varchar(8),getdate(),112) + ''''

exec(@select+@where)

或者更好的选择就是这样......

DECLARE @Sql nvarchar(max);
DECLARE @Date DATE = GETDATE();

SET @Sql = N' select * from tbl Emp '
         + N' where Emp.date >= @Date'

Exec sp_executesql @Sql
                  ,N'@Date DATE'
                  ,@Date

但是为什么你甚至需要动态sql这个简单的查询为什么你不能简单地做

DECLARE @Date DATE = GETDATE();

select * from tbl Emp
where Emp.date >= @Date