PDA

View Full Version : سوال: نحوه مقایسه دو تاریخ



fool66
پنج شنبه 12 اردیبهشت 1392, 19:05 عصر
سلام دوستان

می خواستم بدونم مقایسه تاریخ شمسی یا میلادی راحت تر یا بهتره و چطور میشه دو تاریخ رو با هم مقایسه کرد

می خوام فاکتور های بین دو تاریخ رو چاپ کنم :متفکر:

fool66
پنج شنبه 12 اردیبهشت 1392, 22:01 عصر
:عصبانی++: یکی راهنمایی کنه :ناراحت:

veniz2008
پنج شنبه 12 اردیبهشت 1392, 22:12 عصر
سلام.
فرق انچنانی وجود نداره.
اگر تاریخ ها رو بصورت شمسی ذخیره می کنید حتما همه تاریخ ها رو به یک فرمت ذخیره کنید . مثلا تمام تاریخ ها رو 10 کاراکتری ذخیره کنید( بعنوان مثال 1391/01/14 یا 1392/07/01 ). و موقع مقایسه براحتی میتونید دو تاریخ رو با هم مقایسه کنید.
اگر هم میلادی ذخیره میکنید براحتی میتونید از توابع اماده SQL استفاده کنید و دو تاریخ رو مقایسه کنید.
ولی معمولا برای تاریخ هیا شمسی، بصورت همون اول استفاده میکنن و بصورت رشته 10 کاراکتری ذخیره میکنن.
موفق باشید.

fool66
پنج شنبه 12 اردیبهشت 1392, 22:19 عصر
یعنی مثل همون شرط های معمولی که عدد یا رشته هستن باید مقایسه کرد؟

string.Format("select * from Facter where date >={0} and date<={1} ", d11, d22)

fool66
پنج شنبه 12 اردیبهشت 1392, 22:43 عصر
نمی دونم درست یا غلط ولی اینطور انجام شد :لبخند:

DateTime a=new DateTime();
DateTime b=new DateTime();
b = times.Shamsi2Miladi(datePicker2.Date);
a = times.Shamsi2Miladi(datePicker1.Date);
if (a > b)
{
labelX6.Text = " true";
}
else
labelX6.Text = "false";
توی sql براش باید datetime تعیین کنم یا nchar?

مهدی هادیان2
جمعه 13 اردیبهشت 1392, 06:11 صبح
بسم الله الرحمن الرحیم
با سلام

سلام دوستان

می خواستم بدونم مقایسه تاریخ شمسی یا میلادی راحت تر یا بهتره و چطور میشه دو تاریخ رو با هم مقایسه کرد
تا اون جایی که بنده میدونم تاریخ رو باید میلادی تعریف کرد؛ نوع تاریخی که تو پایگاه داده هست شمسی رو ساپورت نمی کنه.
بعدا با مسئله تبدیل میلادی به شمسی برای نمایش به کاربر مواجه هستید ولی ارزشش رو داره که کار رو درست انجام بدید.
موفق باشید.

fool66
جمعه 13 اردیبهشت 1392, 12:29 عصر
توی تبدیلش مشکلی ندارم

الان من می خوام توی بانک ذخیره کنم از نوع datetime ذخیره کنم بهتره یا nchar؟؟؟؟؟

veniz2008
جمعه 13 اردیبهشت 1392, 12:54 عصر
توی تبدیلش مشکلی ندارم

الان من می خوام توی بانک ذخیره کنم از نوع datetime ذخیره کنم بهتره یا nchar؟؟؟؟؟
همونطور که در بالا گفتم،اگر تاریخ شمسی برای ما مهم باشه معمولا بصورت رشته (Nvarchar یا varchar ) ذخیره میکنن. فقط همه رو با طول یکسان مثلا 10 کاراکتری ثبت کنید.

fool66
جمعه 13 اردیبهشت 1392, 12:59 عصر
همونطور که در بالا گفتم،اگر تاریخ شمسی برای ما مهم باشه معمولا بصورت رشته (Nvarchar یا varchar ) ذخیره میکنن. فقط همه رو با طول یکسان مثلا 10 کاراکتری ثبت کنید.


برای مقایسه هم باید از عملگر های مقایسه ای استفاده کنم ؟؟؟؟

مهدی هادیان2
جمعه 13 اردیبهشت 1392, 13:45 عصر
بسم الله الرحمن الرحیم

توی تبدیلش مشکلی ندارم

الان من می خوام توی بانک ذخیره کنم از نوع datetime ذخیره کنم بهتره یا nchar؟؟؟؟؟
با سلام
اصولی اینه که از نوع datetime استفاده کنید.
موفق باشید.

veniz2008
جمعه 13 اردیبهشت 1392, 15:09 عصر
برای مقایسه هم باید از عملگر های مقایسه ای استفاده کنم ؟؟؟؟
بله از همون عملگرهای محاسباتی > یا < یا =! و ... میتونید استفاده کنید.
موفق باشید.

fool66
جمعه 13 اردیبهشت 1392, 15:12 عصر
تشکر از همه

veniz2008
جمعه 13 اردیبهشت 1392, 15:24 عصر
بسم الله الرحمن الرحیم

با سلام
اصولی اینه که از نوع datetime استفاده کنید.
موفق باشید.
نمیشه گفت اصولی اینه که حتما از datetime استفاده کنیم. نوع datetime مخصوص کسانی ساخته شده که سال میلادی استفاده میکنن و البته توابع مفید خیلی زیادی هم برای اون ساخته شده.
معمولا ما فارسی زبان ها زمانی به جای رشته از datetime استفاده میکنیم که میخوایم روی تاریخ ها مانور زیادی بدیم. در واقع یه جورایی نیاز داریم که از اون توابع پیش فرض استفاده کنیم. در چنین حالاتی راحت تر اینه که بصورت datetime ذخیره بشه ولی زمانیکه روی تاریخ فقط بعنوان مقایسه استفاده میشه یا کار خاصی قرار نیست انجام بشه بهتر همونه که شمسی ذخیره کنید.
موفق باشید.

مهدی هادیان2
جمعه 13 اردیبهشت 1392, 15:50 عصر
بسم الله الرحمن الرحیم

نمیشه گفت اصولی اینه که حتما از datetime استفاده کنیم. نوع datetime مخصوص کسانی ساخته شده که سال میلادی استفاده میکنن و البته توابع مفید خیلی زیادی هم برای اون ساخته شده.
معمولا ما فارسی زبان ها زمانی به جای رشته از datetime استفاده میکنیم که میخوایم روی تاریخ ها مانور زیادی بدیم. در واقع یه جورایی نیاز داریم که از اون توابع پیش فرض استفاده کنیم. در چنین حالاتی راحت تر اینه که بصورت datetime ذخیره بشه ولی زمانیکه روی تاریخ فقط بعنوان مقایسه استفاده میشه یا کار خاصی قرار نیست انجام بشه بهتر همونه که شمسی ذخیره کنید.
موفق باشید.
با سلام
از اول که شما در حال طراحی پایگاه داده هستید نمی تونید بفرمائید که تا چه حد قراره روی چیزی مانور بدید.
برای اینکه بعدها دچار مشکل نشد؛ بایستی از ابتدا همه چی رو اصول باشه.
تا بعدها با کمترین تغییرات مواجه باشیم.
موفق باشید.

veniz2008
جمعه 13 اردیبهشت 1392, 17:08 عصر
بسم الله الرحمن الرحیم

با سلام
از اول که شما در حال طراحی پایگاه داده هستید نمی تونید بفرمائید که تا چه حد قراره روی چیزی مانور بدید.
اصلا با حرفتون موافق نیستم.
اگر ندونیم از برنامه چی میخوایم و قراره در مقصد چه چیزی رو به دست بیاریم بهش میگن کیلویی برنامه نوشتن.
توی کتاب یکی از اساتید گفته شده همیشه به گزارش های برنامتون خوب دقت کنید چون در طراحی دیتابیس بهتون خیلی کمک میکنه. فکر نکنید یک طراحی فقط یعنی ساخت جداول از روی موجودیت ها و روابط. این کار اشتباه هست و ممکنه در آینده باعث تغییرات زیادی در کارمون بشه. حتما باید از همون ابتدا گزارش هایی رو که بهشون نیاز داریم بدونیم. این به ما کمک میکنه تا بفهمیم که آیا فیلدهایی که درحال حاضز برای جداولمون در نظر گرفتیم برای رسیدن به مقصود، کافی و مناسب هست یا خیر.
من بازم تاکید میکنم روی این موضوع که اصولی بودن یک چیز با توجه به نوع پروژه ما مشخص میشه. و همونطور که گفتم اگر قرار نیست روی تاریخ مانوری داده بشه بهتر همونه که رشته ای تاریخ رو در نظر بگیریم. (چون باید برنامه نویس از همون ابتدا بدونه که چه گزارش هایی از این برنامه میخواد. ما حدود 1/5 (یک پنجم ) از وقتمون رو الکی برای مصاحبه با کارفرما و جمع آوری داده ها و تحلیل برنامه نمیذاریم. باید بدونیم دقیقا از ما چی میخوان و طبق اون شروع به طراحی دیتابیس کنیم.)

havash.link
شنبه 14 اردیبهشت 1392, 09:30 صبح
با سلام
شما برای انتخاب بین 2 تاریخ از تابع "BETWEEN" استفاده کنید
بطور مثال
SELECT @date FROM tbl WHARE @date BETWEEN @valueDate1 and @valueDate2