دستور where با تاریخ از نوع timestamp

masima

Member
سلام
من برای بخش پربازدیدترین خبرهای سایتم نیاز به کمک دارم
من یک ستون توی جدولم از نوع timestamp دارم و میخوام پربازدیدترین خبرای سه روز گذشته را واکشی کنم.
اینو میدونم که باید براساس order by `visit` desc برم ولی نمیدونم تاریخ رو بهش چجوری بگم؟

کسی پیشنهادی نداره؟
با سپاس
 

greencat

Member
از دستور where برای این کار استفاده کن!!
کد:
where date>**** and date< **** order ....
درست میشه کارت.
 

masima

Member
مرسی دوست عزیز

ولی هم همون جور که گفتم تاریخ از نوع timestamp هست و این تاریخ این جوری ذخیره میشه :
2011-07-05 21:34:14
خوب منم میدونم این جوری که نوشتین باید نوشت ولی چون تاریخ خودکار داخل دیتابیس ذخیره میشه من چه جوری بهش بگم که از این تاریخ جاری سیستم سه روز کم کنه؟
میشه توی کوئری تاریخ و ساعت امروز رو خودکار بهش گفت ولی اینکه 3 روز ازش کم کنه چجوری؟
 

greencat

Member
سلام؛
خوب فرقی نداره دوست من! شما موقعی که می‌خوایید کوئری بنویسید با تابع time()‎ زمان حال رو به شکل timestamp بدست میارید بعدش زمان 3 روز پیش هم به این صورت time()-3*24*60*60 که میشه تاریخ 3 روز پیش به ثانیه حالا به ترتیب این ه رو بزار مثلا توی متغییرهای nowdate و 3daysago حالا از این دو متغییر توی کوئری که می‌خوای استفاده کن!
موفق باشید.
 

masima

Member
سلام به همه
میدونستم باید یه روش درست حسابی برا این موضوع وجود داشته باشه!
یافتم!
با یه دستور sql یه خطی میشه بدون دردسر به جواب رسید. اینجا میذارمش تا هم شما دوست من و هم بقیه دوستان استفاده کنند:
این دستور مقدار اختلاف ستون تاریخ جدول را با تاریخ ورودی بررسی و همه سطرهایی که با شرط آن برابری میکند را بر میگرداند :
توضیح :
1) علامت میتواند = ، >، =>،<،=< ،=! باشد
2) مقدار عدد بر اساس تعداد روز است
3) عدد میتواند منفی ، صفر و یا مثبت باشد
3) عدد منفی روزهای گذشته، عدد صفر همان روز، عدد مثبت روزهای آینده

PHP:
SELECT * FROM  tbName WHERE datediff( date, '2011-07-05' ) >= -2

در اینجا تمام سطرهایی که تاریخ شان از تاریخ ورودی کوچکتر مساوی 2 روز باشد ( یعنی 3 روز اخیر) را برمیگرداند


 

جدیدترین ارسال ها

بالا