PDA

View Full Version : انتخاب سطرهای با تاریخ و زمان بزرگتر یا مساوی تاریخ و زمان جاری



HamidNch
یک شنبه 20 شهریور 1390, 21:51 عصر
سلام به همه دوستان
من یه جدول به شکل زیر دارم:
75193
دستور زیر را برای انتخاب سطرهایی که بزرگتر یا مساوی تاریخ امروز هستند نوشتم اما درست عمل نمی کنه لطفا در صورت امکان راهنمایی بفرمایید:
@respiteDate تاریخ جاری و @respiteTime زمان جاری می باشد.
@respiteDate DATETIME,
@respiteTime NVARCHAR
SELECT RacingInfo_StartRespiteDate, tsri.RacingInfo_StartRespiteTime,
tsri.RacingInfo_EndRespiteDate, tsri.RacingInfo_EndRespiteTime
FROM tbl_SportRacingInfo tsri
WHERE((tsri.RacingInfo_StartRespiteDate <= @respiteDate)
OR (@respiteDate = tsri.RacingInfo_StartRespiteDate AND @respiteTime <= tsri.RacingInfo_StartRespiteTime))
AND ((tsri.RacingInfo_EndRespiteDate >= @respiteDate)
OR (@respiteDate = tsri.RacingInfo_EndRespiteDate AND @respiteTime >= tsri.RacingInfo_EndRespiteTime))


GROUP BY tsri.RacingInfo_StartRespiteDate,tsri.RacingInfo_S tartRespiteTime,tsri.RacingInfo_StartRespiteDate, tsri.RacingInfo_EndRespiteDate,
tsri.RacingInfo_EndRespiteDate, tsri.RacingInfo_EndRespiteTime

بعد از اجرای این پروسیجر با دادن ورودیهای زیر باید دو سطر آخر در گزارش ظاهر نشوند که متاسفانه اینطور نیست:
@respiteDate = '2011-09-11',
@respiteTime = '21:44'

یوسف زالی
یک شنبه 20 شهریور 1390, 22:12 عصر
با سلام.
کاری نداره دوست من.
روش کلی این جوریه:
1- تاریخ هایی که بزرگتر از تاریخ داده شده هست را بیاور
2- در تاریخ های مساوی زمان های بزرگتر یا مساوی زمان داده شده را بیاور

به همین سادگی:
Select * from Tbl
where Date > @Date or (Date = @Date and Time >= @Time) -- for example

HamidNch
دوشنبه 21 شهریور 1390, 20:38 عصر
اما دوست عزیز اگه یه خورده دقت می کردید بنده دقیقا همین کار رو کردم و همین کد رو زدم ولی مشکل دارم و خروجی درست نیست.

Galawij
دوشنبه 21 شهریور 1390, 21:20 عصر
دوست عزیز،
چرا فیلد تاریخ را Convert نمی کنید تا فقط تاریخ و یا زمان را مقایسه کنید؟
فقط زمان:
CONVERT(CHAR(5), DateColumn, 114)
فقط تاریخ:
Convert(varchar,DateColumn,101)
سعی کنید فرمت پارامترهای ارسالی هم مانند خروجی فرمت این دستورات باشد.
در این زمینه سرچ کنید فرمت های مختلف خروجی را پیدا می کنید.

HamidNch
دوشنبه 21 شهریور 1390, 22:30 عصر
ممنون از پاسختون.مشکلم با این دستور حل شد.
DECLARE @DateTimeNow DATETIME = CONVERT(DateTime, @dateString + ' ' +@respiteTime, 111)