我有一個存儲過程查詢日期在XML中存儲過程
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>
根據我在存儲procudure我在ActivityLog
選擇記錄的連接。 FirstName
,LastName
,Gender
,Startdate
和Enddate
位於XM1中。
現在我只面對日期問題。當我提供日期時,我在執行存儲過程時沒有記錄。
我通過我的代碼發送的startDate
採用這種格式1/16/2013 12:00:00 AM
。
我知道有一些不匹配。我嘗試了幾件事。我刪除了Xml中的時間,並將參數@startdate
轉換爲日期。它不起作用。然後我將@startdate
日期更改爲varchar(20)
。它不起作用。
我要去哪裏錯了
@marc_s - 有趣的是,你會使用duck類型定義(相當強烈)類型的語言。根據我的經驗,在兩個不同的系統中處理日期可能非常困難 - 有時將它們轉換爲字符串表示是比較它們的唯一方法。 – JDB
@marc_s請點擊光明節。正如我所提到的,在轉換爲字符串之前我已經完成了日期。但是兩次嘗試都失敗了。 – DotNetBeginner