PDA

View Full Version : سوال: امکان ورود تاریخ توسط کاریر برنامه به دو شکل ولی ذخیر در sql به یک صورت



KHALESI
چهارشنبه 31 فروردین 1390, 09:55 صبح
من می خوام یه برنامه بنویسم که کاربر بتونه دو مدل تاریخ را وارد کنه مثلا

حالت اول ) یه بازدید که در تاریخ 02/02/2011 و 06/02/2011انجام شده
حالت دوم) یه بازدید که در طول تاریخ 05/03/2011 الی 10/04/2011 انجام شده

در حالت اول بازدید فقط در دو روز نا متوالی بوده و در حالت دوم چندین روز متوالی

در SQL دو تا جدول دارم که یکی اطلاعات پروژه مثل کد پروژه - نام پروژه - بازرس - و ... هست و در جدول دوم فقط کد پروژه و تاریخ

می خوام بعدا بتونم با یه جستجو بفهمم که در فلان بازه زمانی چه پروژه هایی بازدید داشته یا اینکه فلان پروژه چه روزهایی بازدید داشته
چطوری تاریخ رو از کاربر باید بگیرم ؟

میشه تاریخ شروع و پایان و طول دوره رو بگیرم و کدی بنویسم که خودش تاریخ هر روز را پیدا و ذخیره کنه اگه میشه لطفا راهنماییم کنید چطور کد رو بنویسم ؟ اون وقت روزهایی که نامتوالی هستند رو چیکار کنم ؟؟:گریه::عصبانی++:

naeeme
چهارشنبه 31 فروردین 1390, 12:03 عصر
تاریخ رو به صورت بازه زمانی دریافت کن. مثلا از یه پروزه ۵ روز بازدید شده اما نامتوالی. پس ۵ تا بازه زمانی میگیری که شروع و پایانش یکی هست.
اما در پروژه دیگه ۵ روز متوالی بوده، پس یک بازه زمانی دریافت میکنی. این جوری نیازی نیست اطلاعات زیادی ذخیره کنی و دستت برای هر گونه کویری باز هست.
برای راحتی کاربرت هم میتونی یه radiobutton بذاری که مشخص کنه بازه زمانی وارد شده یک روزه هست یا بیش از یک روز.

KHALESI
چهارشنبه 31 فروردین 1390, 12:56 عصر
ممنون از راهنماییت
ولی خوب اونجوری ساختار SQL چه طوری می شه یعنی یه startdate و enddate داشته باشم بعد وقتی جستجو کنم تاریخ هایی که بین دو بازه زمانی هست رو هم نشون می ده مثلا اگر در بانک بازه زمانی بین 16/01/2011 تا 20/01/2011 داشته باشم ولیselect که می زنم بین 01/01/2011 تا 18/01/2011 باشه تاریخ های 17 و 18 رو بهم نشون میده ؟؟
چون برام مهمه که هر پروژه در چه روز و چه تعداد روزی بازدید شده؟

naeeme
چهارشنبه 31 فروردین 1390, 13:19 عصر
مثلا میخوای پروژه‌هایی رو پیدا کنی که بین 1389/05/15 تا 1389/06/10 بازدید داشته باشند. حالا یه پروژه داری که در تاریخ‌های 1389/05/20، 1389/05/22، 1389/06/28 بازدید داشته.
کافیه بنویسی
SELECT * FROM tb_prdate
WHERE (start_date BETWEEN '1389/05/15' AND '1389/06/10')
AND (end_date BETWEEN '1389/05/15' AND '1389/06/10')

این پروژه فرضی، در جوابتون نخواهد بود چون آخرین تاریخ بازدید در شرط شما صدق نمیکنه.
حالا اگر بخوای این پروژه رو داشته باشی، کافیه AND رو به OR تبدیل کنی. با این حالت فکر کنم بتونی کلی بازی کنی و نتایج مختلف رو دربیاری