"从字符串转换日期和/或时间时转换失败"关于动态查询

时间:2015-07-28 05:43:15

标签: sql sql-server

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
你能告诉我我的错误吗?

5 个答案:

答案 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的默认格式