新手,请问sql中时间参数有关问题
新手,请教sql中时间参数问题表abc123中,字段A1是char格式的,字段A2是datetime格式的,删除A1为空和A2小于给
新手,请教sql中时间参数问题
表abc123中,字段A1是char格式的,字段A2是datetime格式的,删除A1为空和A2小于给定时间的,以下第一个执行成功,第二个执行不成功
declare @tablename varchar(50)
declare @sql varchar(200)
declare @stime datetime
set @time=''+CONVERT(varchar(100), GETDATE()-1, 23)+' 00:00:00'
set @tablename='abc123'
set @sql='delete from '+ '[dbo].['+rtrim(@tablename)+ ']' +'where A1 is null'
execute (@sql)
set @sql='delete from '+ '[dbo].['+rtrim(@tablename)+ ']' +'where A2 <'+@time+''
exec(@sql)——执行不成功,报错:从字符串转换日期和/或时间时,转换失败。
把 '+@time+'直接换成@time,报错:A2附近有语法错误
请教,这个地方时间参数@time该怎么处理?
[最优解释]
试试:set @sql='delete from '+ '[dbo].['+rtrim(@tablename)+ ']' +' where A2 <'''+convert(varchar(20),@time)+''''
[其他解释]
set @sql='delete from '+ '[dbo].['+rtrim(@tablename)+ ']' +'where A2 <'''+@time+''''
[其他解释]@sql在exec了一次之后就释放了,你要么换一个名字,要么重新赋值
[其他解释]declare @time varchar(20)
[其他解释]set @sql='delete from '+ '[dbo].['+rtrim(@tablename)+ ']' +'where A2 <'+convert(varchar(20),@time)+''
[其他解释]如果这样的话,会出现
delete from abc123 where A2 <2012-11-15 00:00:00,因为没有引号,所以运行也无法进行,如果在'+convert(varchar(20),@time)+'外再加引号,又不对,这个地方改怎么解决呢?谢谢~
[其他解释]定义成varchar行驶后,外面的单引号该怎么加呢?加上以后显示为字符串,不显示参数内容
[其他解释]这个好了,谢谢,之前总考虑到双引号,原来是多个单引号的,下次会注意~谢谢!
[其他解释]好了,谢谢!~