【发布时间】:2012-03-14 20:51:04
【问题描述】:
我明白了
消息 8114,级别 16,状态 5,过程 DetayliArama,第 0 行错误 将数据类型 varchar 转换为日期。
错误。有什么想法吗?
这是我的存储过程:
ALTER proc [dbo].[DetayliArama]
(
@ilktarih date = null,
@sontarih date = null,
@islem nvarchar(10) = null,
@birim int = null
)
as
declare @sorgu nvarchar (max)
set @sorgu = 'select KasaID,Aciklama,Tutar,Tarih,Islem,IsDeleted,KasalarID
from KasaTable where IsDeleted=0 and KasalarID='+CONVERT(varchar(10),@birim)+' AND '
if (@islem is not null)
set @sorgu += 'Islem like ''%'+@islem+'%'' and '
if (@ilktarih is not null)
set @sorgu+='Tarih between '+convert(datetime,@ilktarih,120)+'
and '+convert(datetime,@sontarih ,120)+' and '
set @sorgu+='1=1 order by Tarih DESC'
exec (@sorgu)
【问题讨论】:
-
我通常通过将逻辑作为独立 sql 运行并检查您尝试转换的变量来调试这类事情。如果您这样做,您尝试转换为日期的 varchar 值是什么?
-
另外你应该使用
exec sp_executesql,而不是exec()。 sqlblog.com/blogs/aaron_bertrand/archive/2011/09/17/…
标签: sql-server datetime