PDA

View Full Version : مبتدی: جستجوی میان دو تاریخ وقتی روز،ماه و سال را جدا ذخیره کرده ام



sara70
جمعه 19 شهریور 1389, 23:16 عصر
سلام
بنده در دیتا بیسم روز،ماه و سال رو جدا ذخیره کرده ام. حالا می خوام رکوردهای میان دو تاریخ رو بیرون بکشم.

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

مثلا از تاریخ 2/9/2005 تا تاریخ 3/2/2010 پاسخی یافت نمی شود(به شماره ماه ها توجه کنید)

Saman Hashemi
شنبه 20 شهریور 1389, 00:12 صبح
سلام
بنده در دیتا بیسم روز،ماه و سال رو جدا ذخیره کرده ام. حالا می خوام رکوردهای میان دو تاریخ رو بیرون بکشم.

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

مثلا از تاریخ 2/9/2005 تا تاریخ 3/2/2010 پاسخی یافت نمی شود(به شماره ماه ها توجه کنید)
حالا اشکالی داره هم جدا نگه دارید وهم یک فیلد به صورت ترکیبی که به مشکل نخورید؟:متفکر:

sara70
شنبه 20 شهریور 1389, 00:38 صبح
اون فیلد ترکیبی رو که می گید چگونه با سه تا فیلد بسازم. بیشتر توضیح بدید لطفا

pikoolas
شنبه 20 شهریور 1389, 01:13 صبح
داده های جدول تاریخ از چه نوعیه؟

Himalaya
شنبه 20 شهریور 1389, 02:58 صبح
تاریخ رو تو یه فیلد از نوع nvarchar(10) و با فرمت 00/00/0000 (روز/ماه/سال) ذخیره کن و بعد تو سلکت واسه مقایسه ازشون استفاده کن...
date < '2010/02/23' and date > '2005/09/13'
(این کدو همین طوری نوشتم)
مقایسه رو از سمت چپ به راست و با استفاده از کد اسکی کاراکترها انجام میده

sara70
شنبه 20 شهریور 1389, 08:55 صبح
داده های جدول تاریخ از چه نوعیه؟

نوع int است.
--------------------

تاریخ رو تو یه فیلد از نوع nvarchar(10) و با فرمت 00/00/0000 (روز/ماه/سال) ذخیره کن و بعد تو سلکت واسه مقایسه ازشون استفاده کن...
date < '2010/02/23' and date > '2005/09/13'
(این کدو همین طوری نوشتم)
مقایسه رو از سمت چپ به راست و با استفاده از کد اسکی کاراکترها انجام میده

من هم همچین حدسی زدم اما اینکه فرمتش را چگونه تنظیم کنم رو نمی دونستم. لطفا راهنمایی کنید.

sara70
شنبه 20 شهریور 1389, 17:44 عصر
تاریخ رو تو یه فیلد از نوع nvarchar(10) و با فرمت 00/00/0000 (روز/ماه/سال) ذخیره کن و بعد تو سلکت واسه مقایسه ازشون استفاده کن...


از کد زیر استفاده کردم. اما فقط عدد 20 را برام ذخیره می کنه. مشکل چیه؟




string date;
date = ""+y.ToString()+"/"+m.ToString()+"/"+d.ToString()+"";




y یعنی year.
mیعنی mounth
d هم day

Saman Hashemi
شنبه 20 شهریور 1389, 23:01 عصر
string date;
date = ""+y.ToString()+"/"+m.ToString()+"/"+d.ToString()+"";




y یعنی year.
mیعنی mounth
d هم day
اون فاصله های اول و آخر رشته برای چیه؟:متفکر:
در کل کدت درسه ببین اشکال از جای دیگه نیست!!

sara70
یک شنبه 21 شهریور 1389, 00:00 صبح
اون فاصله های اول و آخر رشته برای چیه؟:متفکر:
!!

چه فاصله ای منظورتونه؟ فاصله ای نگذاشتم!

Himalaya
یک شنبه 21 شهریور 1389, 01:01 صبح
10 بار اومدم جواب بدم ولی سرعت پایین اینترنتم مانع شد.
این پست رو ببین.
http://barnamenevis.org/forum/showpost.php?p=483295
یه متد داره که خروجی اون متد دقیقا همون چیزیه که میخوای. اون خروجی رو تو دیتابیس ذخیره کن و همونطوری که قبلا گفتم مقایسه کن. واسه نمایش هم از همون میتونی استفاده کنی... اگه بازم مشکل داشت کدتو بزار اینجا