ストアドプロシージャがあります
ALTER PROCEDURE [dbo].[CallHistoryBasedOnPersonInfoPerEvent]
(
@LastName varchar(50)
,@FirstName varchar(50)
,@Gender varchar(20)
,@StartDate varchar(20)
,@EndDate varchar(20) = null
)
AS
BEGIN
SELECT
*
FROM
CallerInformation
INNER JOIN
ActivityLog ON CallerInformation.CallerID = ActivityLog.CallerID
LEFT OUTER JOIN
CaseStatus ON CallerInformation.CaseStatusID = CaseStatus.CaseStatusID
WHERE
(ActivityLog.ActivityID = 1)
AND
ActivityLog.SearchParameter.value('(/Root/PersonSearch/LastName)[1]','varchar(50)') = @LastName
AND
ActivityLog.SearchParameter.value('(/Root/PersonSearch/FirstName)[1]','varchar(50)') = @FirstName
AND
ActivityLog.SearchParameter.value('(/Root/PersonSearch/Gender)[1]','varchar(20)') = @Gender
AND
ActivityLog.SearchParameter.value('(/Root/PersonSearch/StartDate)[1]','varchar(20)') = @StartDate
AND
ActivityLog.SearchParameter.value('(/Root/PersonSearch/EndDate)[1]','varchar(50)') = @EndDate
END
表ActivityLog
でSearchParameter
は、 はxml
列です。xml はこの形式でそこに保存されます
<Root>
<PersonSearch>
<CallerID>1249</CallerID>
<StartDate>2013-01-16T00:00:00</StartDate>
<LastName>b</LastName>
<FirstName>t</FirstName>
<Gender>Male</Gender>
<DOBDay>0</DOBDay>
<DOBMonth>0</DOBMonth>
<AgeRangeStart>33</AgeRangeStart>
<AgeRangeEnd>44</AgeRangeEnd>
<Country>United States</Country>
<UserName>nojha</UserName>
</PersonSearch>
</Root>
ストアド プロシージャの結合に基づいて、 でレコードを選択する必要がありますActivityLog
。、FirstName
、LastName
、およびは XMl にありますGender
。Startdate
Enddate
現在、日付のみの問題に直面しています。日付を指定すると、ストアド プロシージャを実行しているときにレコードが取得されません。
startDate
コードを介して送信している は、この形式です1/16/2013 12:00:00 AM
。
多少のズレがあることは承知しております。私はいくつかのことを試しました。Xml の時刻を削除し、パラメーター@startdate
を日付に変換します。それは動かなかった。その後、@startdate
日付をに変更しましたvarchar(20)
。それは動かなかった。
どこで間違っているのですか