PDA

View Full Version : مشکل between در جستو جو



olampiad
شنبه 02 دی 1396, 11:35 صبح
سلام و عرض ادب و احترام
خواهشا به عکسی که میفرستم یه نگاه بندازین
این عکس دیتابیس من هستش .
به این شرط هم یه نگاه بندازین


`mine_id`='$id' and `time_time` between '1396/7/18' and '1396/8/20'


من وقتی این کد رو مینویسم ردیف هایی رو برمیگردونه ولی وقتی کد پایین رو مینویسم چیزی بر نمیگردونه




`mine_id`='$id' and `time_time` between '1396/1/11' and '1396/11/11'


خودم دقیقا نمیدون که چرا این کد اجرا نمیشه .
آیا این احتمال وجود دار ه که چون بازه تاریخ های من در دیتابیس بین برج 7 و 8 هستش اجرا نمیشه .
به نظرتون مشکل اصلی کجاست ؟

147308

مرسی
ممنون

olampiad
شنبه 02 دی 1396, 16:30 عصر
الآن به این شرط پایین نگاه کنین
چرا این کار نمیکنه


`time_time` between '1396/1/3' and '1396/12/20'


مشکل از کجاست ؟
شما چه راه حلی رو پیشنهاد میکنین ؟
من میخوام رکورد هایی که بازه زمانیش بین اینا هستش رو برگردونه .
ممنون

plague
شنبه 02 دی 1396, 16:57 عصر
مشکل اینه که فیلد تاریخت از نوع char هستش
شما داری 2 تا رشته رو با هم بررسی میکنی که قاعده متفاوتی با مقایسه 2 عدد یا 2 تاریخ داره
که به نظر من کار اشتباهیه ولی اگه اصرار داری این رو تست کن باید جواب بده


SELECT * FROM `tbl` WHERE STR_TO_DATE(time_time, '%Y/%m/%d') BETWEEN '1396/1/11' and '1396/11/11'

olampiad
دوشنبه 04 دی 1396, 09:26 صبح
مشکل اینه که فیلد تاریخت از نوع char هستش
شما داری 2 تا رشته رو با هم بررسی میکنی که قاعده متفاوتی با مقایسه 2 عدد یا 2 تاریخ داره
که به نظر من کار اشتباهیه ولی اگه اصرار داری این رو تست کن باید جواب بده


SELECT * FROM `tbl` WHERE STR_TO_DATE(time_time, '%Y/%m/%d') BETWEEN '1396/1/11' and '1396/11/11'

من کدی رو که شما دادین جایگزین کردم .
ولی به من ارور داد .
الان به این عکس نگلاه کنین
نوع فیلد من varchar هستش .
به نظرتون اینو عوض کنم و چی بزارم خوبه ؟
چه نوعی بزارم تا کار کنه ؟
مرسی

147323

olampiad
دوشنبه 04 دی 1396, 09:43 صبح
به این آدرس برین
https://www.w3schools.com/sql/sql_between.asp
تو اینجا گفته که میشه از between برای تاریخ استفاده کرد

SELECT * FROM Orders
WHERE OrderDate BETWEEN #07/04/1996# AND #07/09/1996#;

اینم نمونه کدش .
برای اینکار نوع فیلدم رو چی بزارم

olampiad
دوشنبه 04 دی 1396, 09:57 صبح
عذر میخوام زیاد سوال پرسیدم


برای جست و جوی بازه زمانی به غیر از between از چه چیزهای دیگه ای میشه استفاده کرد
از دوستان کسی چنین پروژه ای داشته .

sajjad.eskandary
دوشنبه 04 دی 1396, 15:42 عصر
اینم میشه
a > 10 and a < 20
اگر هم تعداد نامرتبی باشه از in میتونی استفاده کنی :
in (2,3,8,12,200)

plague
دوشنبه 04 دی 1396, 17:28 عصر
من کدی رو که شما دادین جایگزین کردم .
ولی به من ارور داد .
الان به این عکس نگلاه کنین
نوع فیلد من varchar هستش .
به نظرتون اینو عوض کنم و چی بزارم خوبه ؟
چه نوعی بزارم تا کار کنه ؟
مرسی

147323

قبل از اجرا یه نگاه به کوئری بنداز , اسم تیبل و فیلد هات رو بایدجایگزین کنی من همینجوری یه چیزی نوشتم ! کوئری مشکل نداره
شما باید این فیلد رو datetime بزاری یا اگه تاریخ خالی میخای ذخیره کنی بدون ساعت و دقیقه و ثانیه میتونی date استفاده کنی