PDA

View Full Version : جستجو بر اساس روز ،ماه و سال در دیتابیس



ahmadflasher
دوشنبه 29 خرداد 1391, 08:59 صبح
سلام.
من تو دیتابیسم(mysql) تاریخ رو به صورت varchar ذخیره کردم مثلا(۲۰-۰۲-۱۳۹۱).
حالا میخوام تو کوئری فقط رکوردهایی رو بیارم که تو ۰۲-۱۳۹۱ تاریخ خوردن(روز مهم نیست) یا مثلا اونایی که دو ماه پیش تاریخ خوردن یا ۱ سال پیش و ... کسی می دونه چطوری باید اینکارو انجام بدم؟؟؟؟

lady64
دوشنبه 29 خرداد 1391, 09:42 صبح
چون میگید روز مهم نیست میشه اینو استفاده کرد :


$query="select * from tb1 where date like '%1390-02%'";


ولی بنظر من میشه روز ، ماه ، سال رو بصورت جدا در جدول ذخیره کرد ، اینطور جستجو شاید راحت تر و منعطف تر باشه .

ahmadflasher
دوشنبه 29 خرداد 1391, 11:19 صبح
ولی بنظر من میشه روز ، ماه ، سال رو بصورت جدا در جدول ذخیره کرد ، اینطور جستجو شاید راحت تر و منعطف تر باشه .
الان دیگه نمی شه کاریش کرد چون کلی اطلاعات توش وارد شده.و تنها مشکلمم همین تاریخه که تفکیک شده نیست.
خوشبختانه اینجا یه سری توابع پیدا کردم که خالی از لطف نیست :لبخندساده:
dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

lady64
دوشنبه 29 خرداد 1391, 12:20 عصر
دیدم توابع رو . شاید شما مدنظرتون این تابع بود که ماه و سال را جدا کنه .


SELECT EXTRACT(YEAR_MONTH FROM '1390-02-03 ')


ولی من این کوئری رو برای جستجو امتحان کردم ، جواب نداد . بنظرتون چه تغییری لازمه :



$query="select * from tb1 where (SELECT EXTRACT(YEAR_MONTH FROM 'date ')=139002) ";



حالا به نتیجه هم که برسیم ، بنظرتون like ساده تر نیست ؟

ahmadflasher
دوشنبه 29 خرداد 1391, 12:48 عصر
ولی من این کوئری رو برای جستجو امتحان کردم ، جواب نداد . بنظرتون چه تغییری لازمه :

$query="select * from tb1 where (SELECT EXTRACT(YEAR_MONTH FROM 'date ')=139002) ";
تست کردم جواب داد البته فیلد date رو تو ' ' قرار ندادم

$query="select * from tb1 where (SELECT EXTRACT(YEAR_MONTH FROM date )='139002') ";


حالا به نتیجه هم که برسیم ، بنظرتون like ساده تر نیست ؟ بستگی به کارتون داره ولی به درد کار من نمیخورد چون می خواستم یه سری آمار بگیرم مثل : پر درآمد ترین روز و ماه و سال - مشتریانی که از آخرین روز بدهی شون X روز گدشته که از تابع DATEDIFF استفاده کردم. ویه سری آمارهای حسابداری که نیاز به تفکیک روز و ماه و سال داشتم.
خوشبختانه مشکلم حل شد :لبخندساده: