رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل between در جستو جو
#1
سلام و عرض ادب و احترام
خواهشا به عکسی که میفرستم یه نگاه بندازین
این عکس دیتابیس من هستش .
به این شرط هم یه نگاه بندازین

`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 هستش اجرا نمیشه .
به نظرتون مشکل اصلی کجاست ؟

مرسی
ممنون


فایل‌های پیوست تصاویر بندانگشتی
   
پاسخ
تشکر شده توسط:
#2
الآن به این شرط پایین نگاه کنین
چرا این کار نمیکنه

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

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


فایل‌های پیوست تصاویر بندانگشتی
   
پاسخ
تشکر شده توسط:
#4
به این آدرس برین
https://www.w3schools.com/sql/sql_between.asp
تو اینجا گفته که میشه از between برای تاریخ استفاده کرد


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


اینم نمونه کدش .
برای اینکار نوع فیلدم رو چی بزارم
پاسخ
تشکر شده توسط:
#5
عذر میخوام زیاد سوال پرسیدم

برای جست و جوی بازه زمانی به غیر از between از چه چیزهای دیگه ای میشه استفاده کرد
از دوستان کسی چنین پروژه ای داشته .
پاسخ
تشکر شده توسط:
#6
تاریخ شمسی رو نمیتونین جستجو با BETWEEN انجام بدین. باید میلادی باشه. بهترین راه اینه که همیشه توی دیتابیس برای نگهداری زمان و تاریخ از نوع INT استفاده کنین و Timestamp که با PHP میگیرین رو توی دیتابیس نگهداری کنین. موقع مقایسه هم کافیه که تاریخ‌های موردنظرتون رو به Timestamp (با کمک کتابخانه‌ی JDF و توابعی مثل jmktime) تبدیل کنین و مقایسه رو با اعداد انجام بدین. ضمناً برای اینکه روز نهایی هم درنظر گرفته بشه، باید 86400 ثانیه بهش اضافه کنین تا موقع مقایسه، تا پایان روز آخر (ثانیه‌ی آخرش) محاسبه بشه. برای مثال:
require_once 'jdf.php';

$start = jmktime(0, 0, 0, 10, 7, 1396);
$end = jmktime(0, 0, 0, 10, 30, 1396) + 86400;
$sql = "SELECT * FROM `Orders` WHERE (`OrderDate` BETWEEN '{$start}' AND '{$end}');";
پاسخ
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 1 مهمان