如何带日期参数动态SQL条件查询

baidu_35289351 2016-09-05 09:25:44
如何动态并接带日期的查询条件?如,@dt 为日期 @wh 为其他
我想传入查询的条件如,
set @wh= 'and bh="0001"'
set @dt='2016-04-01'
怎么组合成动态查询语句

declare @dt datetime
declare @sql varchar(200)
set @dt='2016-05-01'
set @sql='select * from mytable where rq='+@dt --会报错, 说varchar 转换错误
exec(@sql)

如果
set @sql='select * from mytable where rq=@dt'
就报没定义@dt

...全文
815 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
baidu_35289351 2016-09-05
  • 打赏
  • 举报
回复
我有时候,看别人的代码,看到他们会这样写, 原来是为了动态并接。。。
Ginnnnnnnn 2016-09-05
  • 打赏
  • 举报
回复
因为拼接字符串的时候日期并没有加引号啊,print 出来就知道了,版主已经给你解决方法了
中国风 2016-09-05
  • 打赏
  • 举报
回复
或赋值时加引号
declare @dt datetime
declare @sql varchar(200)
set @dt='2016-05-01'
set @sql='select * from mytable where rq='''+CONVERT(VARCHAR(10),@dt,120)+''''   
exec(@sql)
中国风 2016-09-05
  • 打赏
  • 举报
回复
declare @dt datetime

set @dt='2016-05-01'
EXEC('select * from mytable where rq='''+@dt+'''')
加上引号
Pact_Alice 2016-09-05
  • 打赏
  • 举报
回复
declare @dt VARCHAR(100) declare @sql varchar(200) set @dt='''2016-05-01''' set @sql='select * from mytable where rq='+@dt --会报错, 说varchar 转换错误 print(@sql)

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧