У меня есть хранимая процедура, подобная этой. Если я попытаюсь выполнить его в течение 1-го июня до 31-го июля, он показывает ошибку преобразования. Кто-нибудь может помочь, как это исправить? Он показывает результаты за 1-е июня и 30-е годы работы. Но если я использую 31 июля, это не работает.Как решить «Ошибка преобразования типа данных varchar в дату»
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[Samp]
(@StartDate date ,
@EndDate date,
@Flowid int)
AS
BEGIN
if(@Flowid = 909)
begin
select
COUNT(distinct a.Audit_id)
from
[Prod_Workflow_Client41].[dbo].[CustomValues909] a
join
[Prod_Workflow_Client41].[dbo].[Audit] b on a.id = b.id
join
[Prod_Workflow_Client41].[dbo].[Substatus] c on c.Id = b.Substatus_id
where
c.MajorStatus <> 'Cancelled'
and a.Auditor_Reviewed_Date >= @StartDate
and a.Auditor_Reviewed_Date <= @EndDate
end
else if @Flowid = 1010
begin
select
COUNT(distinct a.Audit_id)
from
[Prod_Workflow_Client41].[dbo].[CustomValues1010] a
join
[Prod_Workflow_Client41].[dbo].[Audit] b on a.id = b.id
join
[Prod_Workflow_Client41].[dbo].[Substatus] c on c.Id = b.Substatus_id
where
c.MajorStatus <> 'Cancelled'
and a.Auditor_Reviewed_Date >= @StartDate
and a.Auditor_Reviewed_Date <= @EndDate
end
else if @Flowid = 101
begin
select
COUNT(distinct a.Audit_id)
from
[Prod_Workflow_Client41].[dbo].[CustomValues101] a
join
[Prod_Workflow_Client41].[dbo].[Audit] b on a.id = b.id
join
[Prod_Workflow_Client41].[dbo].[Substatus] c on c.Id = b.Substatus_id
where
c.MajorStatus <> 'Cancelled'
and a.Auditor_Reviewed_Date >= @StartDate
and a.Auditor_Reviewed_Date <= @EndDate
end
end
--exec [dbo].[Samp] '01/06/2015','31/06/2015',909
--exec [dbo].[Samp] '01/06/2015','30/06/2015',1010
--exec [dbo].[Samp] '01/06/2015','30/06/2015',101
Вы должны попытаться сломать свой код части, которая вызывает проблему. –
столбец a.Auditor_Reviewed_Date имеет тип nvarchar (max). – Perumal
[Плохие привычки пинать: выбор неправильного типа данных] (http: // sqlblog .com/blogs/aaron_bertrand/archive/2009/10/12/bad-habits-to-kick-use-the-wrong-data-type.aspx) - вы всегда должны использовать наиболее подходящий тип данных - вот что они " в конце концов! Если у вас есть ** DATE ** - вы должны ** хранить его как таковое! ** Не храните даты как 'varchar' и наиболее определенно не как' varchar (max) '(или вы когда-либо видели дату, которая почти ** 2 миллиарда символов ** длинный?!?!) –