declare @date Datetime ='',@query nvarchar(max);
set @date =getdate();
set @query='select * from [3].[Sync_Database_BTS].dbo.[Test] where [Test] >=cast(date,'+ @date +' ,103) ; '
exec sp_executesql @query
你能告诉我我的错误吗?
答案 0 :(得分:2)
如果您在动态查询中使用date
类型,则需要将varchar
转换为datetime
您无法在style
函数中使用cast
代替您使用Convert
。此外,您需要在datetime
参数周围添加额外的单引号。
DECLARE @date DATETIME ='',
@query NVARCHAR(max);
SET @date = Getdate();
SET @query='select * from [3].[Sync_Database_BTS].dbo.[Test] where [Test] >=convert(date,'''
+ Cast(@date AS VARCHAR(50)) + ''' ,103) ; '
--print @query
EXEC Sp_executesql
@query
始终使用打印声明来调试动态查询
答案 1 :(得分:2)
仅仅因为您正在使用动态查询,这不会阻止您使用parameters并保持输入的所有内容:
{{1}}
答案 2 :(得分:0)
试试这个
declare @date Datetime ='',@query nvarchar(max);
set @date =getdate();
set @query='select * from [3].[Sync_Database_BTS].dbo.[Test] where [Test] >=convert(date,'+ @date +' ,103) ; '
exec sp_executesql @query
答案 3 :(得分:0)
声明@date日期时间 ,@ query nvarchar(max); 设置@date = getdate() - 2; set @ query ='select * from [Test] where convert(varchar,test,100)> ='+''''+ convert(varchar,@ date,100)+'''' 打印(@query) exec sp_executesql @query
答案 4 :(得分:0)
试试这个对我有用
declare @date Datetime ='',@query nvarchar(max);
set @date = convert(Varchar(10),getdate(),126);
set @query='select * from [3].[Sync_Database_BTS].dbo.[Test] where [Test] >= @date; '
exec sp_executesql @query
如果使用126格式是Sql Server的默认格式