PDA

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



.fatemeh
یک شنبه 11 اردیبهشت 1390, 09:28 صبح
سلام
تاریخ من در بانک به صورت 89/11/05 ذخیره می شه
کاربر دو تاریخ وارد می کنه که ، مطالب بین این دو تاریخ نشون داده بشه
مثلا کاربر تاریخ رو به صورت (از 89/11/12 تا 90/02/10) وارد می کنه
حالا باید اخباری که بین این دو تاریخ هست نمایش داده بشه
ولی برای مقایسه تاریخ مشکل داره
چیکار کنم؟

sedamorde
یک شنبه 11 اردیبهشت 1390, 09:42 صبح
به نظر من تاریخ ها را به timestamp تبدیل کنید بعد با هم مقایسه کنید.
برای timestamp هم میتونید اینجا را مطالعه کنید : http://php.net/manual/en/function.time.php

.fatemeh
یک شنبه 11 اردیبهشت 1390, 11:52 صبح
میشه راهنمایی بیشتری بکنین
از لینکی که داده بودین نتونستم استفاده کنم

binyaft
یک شنبه 11 اردیبهشت 1390, 12:00 عصر
به غیر اون TimeStamp یه راهی الان به ذهنم رسید :

تاریخ به صورت زیر ذخیره شده :


1384/02/12

کارکتر های / رو بردار :


13840212

بعد به صورت یک عدد در میاد که میتونی بیشتر از اون ( پست های بعد از اون تاریخ ) و کمتر از اون ( پست های قبل از اون تاریخ ) رو نمایش بدی !

البته این یه راه هست که به صورت عملی تست نشده ، اما به نظر میاد کار کنه !

Mahdi.Spirit
یک شنبه 11 اردیبهشت 1390, 12:24 عصر
به صورت varchar ذخيره شده ؟
لازم نيست كاركتر "/" رو بردارين ،‌ اينو امتحان كنين ،‌ مشكلي نداره:


SELECT * FROM tblDate
WHERE (`tblDate`.`date` > '89/11/12')
AND (`tblDate`.`date` < '90/02/10')

يا اين:


SELECT * FROM tblDate
WHERE (`tblDate`.`date` BETWEEN '89/11/12' AND '90/02/10')

ghasemweb
یک شنبه 11 اردیبهشت 1390, 16:14 عصر
من هم تو یکی از پروژهام نیاز به انجام این کار داستم که بین دو تاریخ رو گزارشگیری کنه که من تاریخ رو به صورت یک عدد صحیح 8 رقمی ذخیره کردم مثلا 13900211 که بعدش میتونید به راحتی بین دو تاریخ رو گزارش گیری کنید . البته این یک فیلد جدای از تاریخ اصلیه که نمایش داده نمیشه و فقط برای کار گزارشگیری به کار میره

Mahdi.Spirit
یک شنبه 11 اردیبهشت 1390, 16:42 عصر
من هم تو یکی از پروژهام نیاز به انجام این کار داستم که بین دو تاریخ رو گزارشگیری کنه که من تاریخ رو به صورت یک عدد صحیح 8 رقمی ذخیره کردم مثلا 13900211 که بعدش میتونید به راحتی بین دو تاریخ رو گزارش گیری کنید . البته این یک فیلد جدای از تاریخ اصلیه که نمایش داده نمیشه و فقط برای کار گزارشگیری به کار میره
برای چی دوتا؟
خب با یكی كاركنید دیگه!

UnnamE
یک شنبه 11 اردیبهشت 1390, 17:05 عصر
تا timestamp هست ديگه اين كارهاي عجيب و غريب واس چي؟
اين كارها فقط performance زو پايين مياره
تا اونجايي كه من ميدونم ديتابيس در محاسبه و مقايسه int سرعت فوق العاده اي نسبت به var داره
حالا ديگه به خودت بستگي داره
اينجور كه پيداست دليل ذخيره به اين شكل واسه نمايش به همون شكل در خروجي هست
كه با استفاده از Jdate ميتوني همه اين كارها رو انجام بدي، در ضمن string format رو واسه همين استفاده ميكنن

xoogle.ir
یک شنبه 11 اردیبهشت 1390, 18:38 عصر
همون طور که دوستان اشاره کردن بهترین فرمت برای ذخیره تاریخ timestamp هست که در این صورت کار با تاریخ خیلی آسون میشه.

.fatemeh
چهارشنبه 14 اردیبهشت 1390, 10:54 صبح
به غیر اون TimeStamp یه راهی الان به ذهنم رسید :

تاریخ به صورت زیر ذخیره شده :

1
1384/02/12





کارکتر های / رو بردار :

1
13840212





بعد به صورت یک عدد در میاد که میتونی بیشتر از اون ( پست های بعد از اون تاریخ ) و کمتر از اون ( پست های قبل از اون تاریخ ) رو نمایش بدی !

البته این یه راه هست که به صورت عملی تست نشده ، اما به نظر میاد کار کنه !

ممنون، درست شد!

Jason.Bourne
چهارشنبه 14 اردیبهشت 1390, 11:11 صبح
خدا را شکر که مشکل شما حل شد.
اما به نظر بهترین روش ذخیره تاریخ بصورت DateTime هستش. چون به اینصورت توسط توابع MySQL میتوانید هر کاری که مایل بودید انجام دهید ( و صد البته با performance بالا).

.fatemeh
چهارشنبه 14 اردیبهشت 1390, 11:28 صبح
یک مشکلی هست که وقتی تاریخ رو به صورت date time ذخیره می کنیم، تاریخ به صورت میلادی درج می شه
اما من می خوام به فرمت شمسی باشه

Jason.Bourne
چهارشنبه 14 اردیبهشت 1390, 11:49 صبح
تبدیل شمسی به میلادی و میلادی به شمسی که کار خاصی نداره!

shahriyar3
چهارشنبه 14 اردیبهشت 1390, 17:50 عصر
یک مشکلی هست که وقتی تاریخ رو به صورت date time ذخیره می کنیم، تاریخ به صورت میلادی درج می شه
اما من می خوام به فرمت شمسی باشه


$NewDate=Date('y:m:d', strtotime("+3 days"));
// ya
$tomorrow = date('y:m:d', time() + 86400);

//ya


از فانكشن function.date-add (http://ca.php.net/manual/en/function.date-add.php) استفاده كنيد. خروجي را با تابع jdf تبديل به شمسي كنيد.

ghasemweb
پنج شنبه 15 اردیبهشت 1390, 22:56 عصر
من با توابع mysql آشنایی ندارم که باهاش تاریخ 15-02-1390 را به 13900215 تبدیل کنم واسه همین من اومدم دوتا فیلد در نظر گرفتم که یکیش تاریخ 15-02-1390و دیگر 13900215 را ذخیره میکنه که واسه مقایسه هم راحتر میشه البته نو فیلد اولی باید رشته ای و دومی عددی باشه.
موفق باشید

رضا قربانی
یک شنبه 25 اردیبهشت 1390, 14:16 عصر
می تونید توسط تابع آقای جلالی این کار رو انجام بدید

این فایل رو دریافت کنید و بانکش رو در mysql قرار بدید - جریان کار میاد دستتون


موفق باشید

numberone1
یک شنبه 25 اردیبهشت 1390, 15:05 عصر
من تاريخ ميلادي ثبت كردم توي ديتابيس وقتي ميخوام تبديلش كنم به شمسي از تابع jdf استفاده ميكنم مشكل داره
توي توضيحات خودش نوشته كه باي 3 تا پرامتر سال ماه روز و بدم بعد تابع خروجي شمسي بده بهم
http://jdf.scr.ir/jdf/
به اين شكل


gregorian_to_jalali($g_y,$g_m,$g_d,$mod);

راهي نداره كه تاريخ و كلا بصورت يك پارامتر تكي بديم و خروجي بگيريم؟
مثلا


$date =date();
$date = gregorian_to_jalali('Y F ' $date);