PDA

View Full Version : مشکل در جستجو با فیلدتاریخ از نوع date



hasti44
پنج شنبه 25 اسفند 1390, 18:36 عصر
سلام
من دو تا فیلد تاریخ از نوع dateدر جدول دارم که میخواهم بین این دو تاریخ جستجو کنم
یعنی کاربر اطلاعاتی که در این بازه زمانی وارد شده است را جستجو میکند برای ان این کد را نوشتم

ALTER PROCEDURE [dbo].[ReportShow2]

@DrID int=null,
@OrgID int=null,
@IllnessID int=null,

@BDate date=null,
@EDate date=null,

@Fname nvarchar(max)=null,
@Lname nvarchar(max)=null,
@NationalID nvarchar(50)=null


as
begin
select SearchID,NationalID,Illness,DrID,Fname,Lname,Organ ization,
dbo.PersianDate(BDate) as bdate
,dbo.PersianDate(EDate) as edate

from View_Report
where

coalesce(@DrID,DrID)=DrID AND
coalesce(@IllnessID,IllnessID)=IllnessID AND
coalesce(@Fname,Fname)=Fname AND
coalesce(@Lname,Lname)=Lname AND
coalesce(@NationalID,NationalID)=NationalID and
(
DATEPART(YY,BDate)<DATEPART(YY,@BDate) ) or
( (DATEPART(yy,BDate)=DATEPART(YY,@BDate)) and
(DATEPART(MM,BDate)< DATEPART(MM,@BDate)) ) or
( (DATEPART(yy,BDate)=DATEPART(YY,@BDate)) and
(DATEPART(MM,BDate)= DATEPART(MM,@BDate)) and
(DATEPART(DD,BDate)< DATEPART(DD,@BDate)))or
( (DATEPART(yy,BDate)=DATEPART(YY,@BDate)) and
(DATEPART(MM,BDate)= DATEPART(MM,@BDate)) and
(DATEPART(DD,BDate)= DATEPART(DD,@BDate))
)

AND

(
DATEPART(yy, EDate)<DATEPART(YY,@EDate)) or
( (DATEPART(YY,EDate)=DATEPART(YY,@EDate)) and (DATEPART(MM,EDate)< DATEPART(MM,@EDate)))
or
( (DATEPART(YY,EDate)=
DATEPART(YY,@EDate)) and (DATEPART(MM,EDate)= DATEPART(MM,@EDate))
and(DATEPART(DD,EDate)< DATEPART(DD,@EDate)) )
or
((DATEPART(YY,EDate)=DATEPART(YY,@EDate)) and (DATEPART(MM,EDate)= DATEPART(MM,@EDate)))
and
(DATEPART(DD,EDate)= DATEPART(DD,@EDate))


end

الان مشکلم اینه که پروسیجر خروجی نداره
یعنی نه خطا میده و نه اطلاعات حتی زمانی که فیلدهای دیگر (غیر تاریخ) را هم وارد میکنم بازهم هیچ خروجی نداره
لطفا راهنمایی کنید
خیلی عجله دارم

micro24
پنج شنبه 25 اسفند 1390, 19:15 عصر
با سلام

امیدوارم درست متوجه شده باشم منظورتان گزارش گیری در یک تاریخ خاص هست توی Where خود به صورت زیر بنویسید یا از between استفاده کنید.

EDate>=@EDate +' 00:00:00'
and EDate<=@EDate+ ' 23:59:59'

hasti44
پنج شنبه 25 اسفند 1390, 20:00 عصر
فیلد bdate,edate از نوع date هست نمیشه مقایسه روش انجام داد
فرمایش شما برای فیلدvarchar صحیح است