PDA

View Full Version : بررسی یک مقدار بین دوتاریخ در table



sadaf_
شنبه 02 مهر 1390, 11:49 صبح
با سلام
من در table دو تا تاریخ دارم
تاریخ شروع و تاریخ پایان
حالا در برنامه ام یک تاریخ می دم
چطوری می تونم بفهمم که تاریخ وارد شده آیا بین تاریخ شروع و پایان هست یا نه؟
شبیه between می شه اما برعکس ولی کاربردش رو نمی دونم ؟
ممنون

Galawij
شنبه 02 مهر 1390, 18:35 عصر
می تونید در حالت Design جدولتون روی آن فیلد یک قید بذارید،و یا:
ALTER PROCEDURE [dbo].[SPR_EnterMaterials](@BeginDate Datetime=NULL,@EndDate Datetime=NULL)
Set @BeginDate=ISNULL(@BeginDate,0)
Set @EndDate=ISNULL(@EndDate,0)
Select ... From .... Where ((@BeginDate=0)OR(dbo.TbDateReport.JulianDateRepor t>=DATEADD(DAY,DATEDIFF(DAY,0,@BeginDate),0)))
And
((@EndDate=0)OR(dbo.TbDateReport.JulianDateReport<=DATEADD(DAY,DATEDIFF(DAY,0,@EndDate),0)))

یوسف زالی
شنبه 02 مهر 1390, 20:09 عصر
سلام.
اگر نوع تاریخ شما از نوع عددی یا کاراکتری یا datetime باشه به راحتی همون between رو بکار ببرید (پارامتر رو باید همنوع انتخاب کنید):
select * from TBL where @Date between Date1 and Date2

اگر همنوع نبود تبدیل کنید.
یک مثال ساده:
select*
from TBL
where YourTime between CAST('2010-05-12'AS datetime) and CAST('2010-05-20' AS datetime) -- test

آیا طور دیگه ای ذخیره شده؟

sadaf_
دوشنبه 04 مهر 1390, 10:41 صبح
با مثال شاید شفاف تر بگم
من در برنامه ام یک تاریخ می زنم 01/07/1390
و در یک رکورد table دو تا تاریخ دارم
یکیش 01/01/1390
و دیگری
29/12/1390
حالا من می خوام چک کنم که آیا 01/07/1390 که هنوز هم ذخیره نشده بین 01/01/1390 و 29/12/1390 هست یا نه
نوع مقدارم char(10) هست و مشکلی از نظر مقدار ندارم فقط می خوام ببینم تاریخ اولیه جزء اون دو تا تاریخ هست یا نه
از کمکتون ممنونم

یوسف زالی
دوشنبه 04 مهر 1390, 11:14 صبح
ببینید اگر از SP استفاده می کنید در متغیر D@ بریزید و اون رو تست کنید.
با همون between
در UI هم میشه با همین روش کار کرد.
between در یازه کاراکتری هم کار می کنه و مشکلی نداره.

sadaf_
دوشنبه 04 مهر 1390, 12:11 عصر
ببینید اگر از SP استفاده می کنید در متغیر D@ بریزید و اون رو تست کنید.
با همون between
در UI هم میشه با همین روش کار کرد.
between در یازه کاراکتری هم کار می کنه و مشکلی نداره.
اگر امکانش هست میشه با کد و مثال بهم بگید من متوجه نشدم

یوسف زالی
دوشنبه 04 مهر 1390, 13:16 عصر
مثال از SP:

create procedure SP1
@D char(10) as
if exists(select top 1 1 from TBL where @D between D1 and D2) DoSomething..