PDA

View Full Version : دریافت اطلاعات در یک بازه مشخص



programmermp
دوشنبه 09 آبان 1384, 19:50 عصر
با سلام و خسته نباشید خدمت دوستان

فرض کنید یک بانک اطلاعاتی داریم که شامل یک فیلد به نام تاریخ می باشد حالا من می خواهم اطلاعات

وارد شده را در یک بازه مشخص سرچ کنم منظورم اینه که یک تاریخ در بازه ای مشخص وارد می کنم مثلا

8/8/84 الی 8/10/84 من می خواهم که برنامه ای بنویسم که مانند نمونه در یک بازه مشخص تاریخی را

وارد کنم و برنامه تمامی رکورد هایی که فیلد تاریخ انها در این بازه می باشد به من نشان دهد

امیدوارم توانسته باشم منظور خود را به درستی برسانم

با تشکر

M.GhanaatPisheh
دوشنبه 09 آبان 1384, 20:30 عصر
دوست عزیز
بهترین پیشنهادی که من برای شما دارم اینه که تاریخ رو توی Data Base تون با فرمت DateTime ذخیره کنید.
توی سطح Application تاریخ رو با فرمت هجری شمسی از کاربر دریافت کنید.
تاریخی که از کاربر دریافت می کنید توی سطح َApp به میلادی تبدیل کنید و به SQL SERVER پاس کنید تا محاسبات توی SQL SQEVER روی داده میلادی صورت بگیره.
و نتیجه رو به کاربر به صورت شمسی مجددا نشون بدید.

اگر تصمیم دارید تبدیل تاریخ رو توی سطح DBMS انجام بدید باید یه مقدار بیشتر زحمت بکشید و Stored rocedure تبدیل تاریخ رو TSQL بنویسید.
( یا اینکه صبر کنید نسخه نهایی SQL SERVER 2005 منتشر شه و با ‍ CLR
Integrate کار کنید ).

programmermp
دوشنبه 09 آبان 1384, 20:43 عصر
با تشکر از پاسخ شما

منظور من انجام این کار در دات نت با دیتا بیس اکسس هست اگه لطف کنید در این زمینه من رو راهنمایی

کنید ممنون می شم

روح اله معینی زاده
چهارشنبه 11 آبان 1384, 07:18 صبح
سلام
اگه دوست داری می تونی بی کلاس تر از این حرفا کار کنی. فیلد تاریخت رو از نوع text قرار بده و تاریخ رو توش (شمسی) ذخیره کن. هر وقت هم خواست یا یه SQL داده‌ها رو بازیابی کن مثل

SELECT * FROM table WHERE datefield >= '1384/01/01' AND datefield <= '1384/09/01'
با احترام- خدانگهدار

Nourizadeh_62
شنبه 27 آبان 1385, 02:04 صبح
یعنی این روشی که شما می گید جواب میده؟
باید امتحانش بکنم.
به نظر خیلی غیر استاندارد میاد.
مگه شما فیلد رو برای اس کیو ال از نوع text تعریف کردید و مثل اینکه بهش می گویید که رکوردهایی رو که در بازه ali تا hassan هستند رو انتخاب بکن.
البته این نظر منه.
امتحان می کنم و جواب قطعی بهتون می دم...

rezaei manesh
شنبه 27 آبان 1385, 08:10 صبح
سلام
کی گفت این روش بی کلاسی هست ؟!
100% جواب می ده فقط چک کن که تاریخ با یک فرمت وارد می شه تبدیل تاریخ به میلادی همیشه خوب نیست برای گذارشگیری شما باید مثلا چندین هزار بار فیلد تبدیل کنی که اگه فیلد تاریخ خودت رو از نوع char بگیری خیلی بهتره من که تا حالا رازی بودم من تا موقعی که نشه تاریخ فارسی رو تویه فیلد از نوع date به طور کامل ذخیره کرد از این روش استفاده می کنم

Nourizadeh_62
جمعه 03 آذر 1385, 01:35 صبح
بله
درسته
این روش واقعا جواب میده.
تو تاپیک های قبلی هم تقریباً به همین نتیجه رسیدیم. اینکه دیتاتایپ فیلد دیت رو بجای اینکه از نوع datetime بگیریم، می تونیم با کمال اطمینان از نوع string یا همون char بگیریم.
در اینصورت می تونیم موقع مقایسه هم مانند مواقع عادی، دو تا تاریخ رو باهم مقایسه کنیم حتی اینقدر آسون و مبتدیانه:

select * from infos where mydate>='1384/04/02' and mydate<='1385/04/02'
فقط باید دقت کنیم که این تاریخ همیشه با فرمت 10کاراکتری وارد دیتابیس بشه و در هنگام مقایسه هم باید این فرمت رو رعایت کنیم.
با این کار همه مشکلات حله....
ممنون از همه دوستان که راهنمایی کردند
ضمناً اینجا (http://barnamenevis.org/forum/showthread.php?t=56199&page=2) هم بحثهای جالب و ضد و نقیضی شده. حتما ببینید...