PDA

View Full Version : سوال: بدست آوردن تعداد ردیف های ثبت شده با استفاده از زمان یونیکس



idocsidocs
سه شنبه 12 مهر 1390, 00:27 صبح
من توی سیستم آمار گیر سایتم زمان بازدید رو بر حسب زمان یونیکس توی دیتابیس ذخیره می کنم.

الان وقتی می خوام که تعداد بازدیدهای امروز و روز گذشته رو محاسبه کنم، نمی دونم چه معیاری انتخاب کنم تا بتونم بازدیدهایی که مثلا از ساعت 00:00 به بعد انجام شدن رو محاسبه کنم.

لطفا راهنمایی کنید.

Unique
پنج شنبه 14 مهر 1390, 00:10 صبح
کاری نداره ، با strtotime یا mktime میتونی timestamp یا همون زمان unix را بگیری و بدی به SQL

idocsidocs
پنج شنبه 14 مهر 1390, 14:57 عصر
کاری نداره ، با strtotime یا mktime میتونی timestamp یا همون زمان unix را بگیری و بدی به SQL

متوجه نشدم که باید چیکار کنم؟

توی دیتابیس اطلاعات به صورت یونیکس ذخیره شدن و اگه زمان یونیکس رو به کمک strtotime به زمان واقعی تبدیل کنم، اطلاعات با هم همخوانی ندارن.

binyaft
پنج شنبه 14 مهر 1390, 15:38 عصر
تعداد ثانیه ازش کم کن بده به Query

idocsidocs
پنج شنبه 14 مهر 1390, 16:13 عصر
تعداد ثانیه ازش کم کن بده به Query
چطور بیاد بدونم که چه تعداد ثانیه باید کم کنم؟ من می خوام بازدیدهای از 00:00 به بعد رو محاسبه کنم.

binyaft
پنج شنبه 14 مهر 1390, 16:29 عصر
با توجه به اینکه هر دقیقه 60 ثانیه هست ، میتونی بیای عقب

idocsidocs
پنج شنبه 14 مهر 1390, 17:45 عصر
با توجه به اینکه هر دقیقه 60 ثانیه هست ، میتونی بیای عقب

عقب اومدن که مشکلی نداره.

من با تابع time ثانیه های سپری شده از (اگه اشتباه نکنم) سال 79 به بعد رو برمی گردونه می گیرم. با این تعداد ثانیه نمی شه کاری که من می خوام انجام بدم رو انجام داد.

باید از یه تابع دیگه استفاده کنم تا بتونم تعداد ثانیه های سپری شده از ساعت 00:00 امروز رو بدست بیارم و بعد بتونم مشکلم رو حل کنم.

نمی دونم چطور باید اینکار رو انجام بدم. لطفا راهنمایی کنید.

Unique
جمعه 15 مهر 1390, 00:42 صبح
ببین دوست عزیز ، شما اطلاعاتت را یا به صورت DateTime خود mysql ذخیره کردی یا اینکه timestamp از php گرفتی و ذخیره کردی توی یک فیلد غیر تاریخ (که کار اشتباهی هستش)
در هر صورت فرقی نمیکنه شما برای query گرفتن باید از فرمت پایگاه دادت استفاده کنی ، مثلا اسم فیلد تاریخ شما fld_date اگه باشه و شما بخوای رکورد هایی که بعد از ساعت 00:00 امروز ثبت شده اند را select کنی :


$st_date = date("Y-m-d 0:0:0");
select * from my_table where fld_date > \''.$st_date.'\'';


اگه هم توی یک فیلد غیر تاریخ timestamp ذخیره کردی st_date را به timestamp تبدیل کن و select بگیر.

idocsidocs
جمعه 15 مهر 1390, 01:24 صبح
یا اینکه timestamp از php گرفتی و ذخیره کردی توی یک فیلد غیر تاریخ (که کار اشتباهی هستش)
آخه من می خوام تاریخ بر حسب تاریخ شمسی توی وب سایت نمایش داده بشه و تنها راهی کی می تونم تاریخ رو به تاریخ شمسی تبدیل کنم اینه که تاریخ رو به صورت ثانیه توی دیتابیس ذخیره کنم و بعد از بازیابی این ثانیه ها از دیتابیس، اون رو به توابع تبدیل تاریخ میلادی به شمسی بدم.

آیا برای این مشکل راهی هست؟

Unique
شنبه 16 مهر 1390, 18:08 عصر
به نظرم توابع تبدیل تاریخ را خوب نمیشناسی ، شما در فرمت Datetime ذخیره کن زمانی که میخوای تبدیل کنی به timestamp وبدی به مثلا تابع fdate برای آرگمان دوم بعد از format با تابع strtotime از فیلد Datetime معادل timestamp بگیر ، چرا لقمه را دور سرتون میچرخونین ؟