PDA

View Full Version : گفتگو: مهر زمان یا تاریخ رشته ایی ؟



abolfazl-z
دوشنبه 28 اردیبهشت 1394, 09:56 صبح
سلام دوستان

شما تو پروژه هاتون از مهر زمان استفاده می کنید یا تاریخ رشته ایی ؟ و برای چی ؟

نظر خودم :

من خودم همیشه از مهر زمان استفاده می کردم.

یک دلیل اش این است که عدد است و حجم اطلاعاتی که تو دیتابیس قرار میگیره کمتر است نسبت به تاریخ رشته ایی ولی در کل این دلیل خوبی نمیشه

و یک دلیل دیگر این است که از این طرف نمایش اش خیلی راحت تر است. بدون هیچ کم و زیادی ورودی توابعی چون date و ... است.

و همچنین سرعت جستجو عدد نسبت به رشته خیلی سریع تر است و اگر عدد هم index گذاری بشود سرعت بیشتر خواهد شد.

ولی در مدل های جستجو یکم کم میاره.

مثلا رکورد هایی که زمان آن ها بین ساعت 4 تا 6 بعد از ظهر است.(هر روزی)

کلا بیشتر داده ها باید سمت PHP درست شود.

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

دوستان نظر شما چیست ؟

MMSHFE
دوشنبه 28 اردیبهشت 1394, 10:06 صبح
من هم از مهر زمان استفاده میکنم. انعطاف پذیری بیشتری داره و نهایتاً موارد خیلی خاص مثل جستجوهایی که مثال زدین رو میشه تحمل کرد.

arta.nasiri
دوشنبه 28 اردیبهشت 1394, 14:17 عصر
منم از مهر زمان استفاده میکنم که اکثر دلایل رو خودتون فرمودید.




مثلا رکورد هایی که زمان آن ها بین ساعت 4 تا 6 بعد از ظهر است.(هر روزی)

select * from `table` where hour(FROM_UNIXTIME(`createDate`)) >= 16 and hour(FROM_UNIXTIME(`createDate`)) <= 18;

که در اینجا میتونید بجای تابع hour از توابع دیگه ای مثل DAY,MONTH,SECOND,YEAR و بقیه توابعی که مربوط به تاریخ و زمان میشن استفاده کنید.

abolfazl-z
دوشنبه 28 اردیبهشت 1394, 16:43 عصر
منم از مهر زمان استفاده میکنم که اکثر دلایل رو خودتون فرمودید.




select * from `table` where hour(FROM_UNIXTIME(`createDate`)) >= 16 and hour(FROM_UNIXTIME(`createDate`)) <= 18;

که در اینجا میتونید بجای تابع hour از توابع دیگه ای مثل DAY,MONTH,SECOND,YEAR و بقیه توابعی که مربوط به تاریخ و زمان میشن استفاده کنید.

البته تابع FROM_UNIXTIME بر اساس منطقه زمانی تنظیم شده خود mysql خروج را نشون میدهد باید حتما قبل از اجرا دستور زیر را مقداردهی کنیم.

SET time_zone = '+00:00';

همچنین ساعت 16 و 18 از دید تاریخ هجری شمسی است. همانطور که میدانید 6 ماه اول ساعت ایران را یک ساعت جلو می برند.

Unique
دوشنبه 28 اردیبهشت 1394, 18:45 عصر
مهر زمان ؟! خدایی دیگه آخرش بودا ، تا حالا نشنیده و ندیده بودم کسی timestamp را ترجمه کنه ! یاد زمانی افتادم که یک نفر به من گفت لوح فشرده بده و مونده بودم چی میگه این بابا ! لوح فشرده دگه چی صیغه ایه ؟ بعد که فهمیدم منظورش CD و ترجمه Compact Disc هست هنگ کرده بودم‌ ! خدایی این ها را نباید ترجمه کرد.

اما بنده بر خلاف دوستان از DateTime یا Date استفاده میکنم و اگه نیاز به خروجی timestamp از خود mysql هم بود خود mysql توابع تبدیل خوبی داره. کلا دلیلی نداره وقتی توع داده ای به نام زمان و تاریخ وجود داره ما از خودمون رشته و عدد در بیاریم !!! در مورد نوع ذخیره هم جایی خوندم Mysql خودش datetime را به صورت timestamp ذخیره میکنه اما مطمئن نیستم.

abolfazl-z
دوشنبه 28 اردیبهشت 1394, 22:25 عصر
مهر زمان ؟! خدایی دیگه آخرش بودا ، تا حالا نشنیده و ندیده بودم کسی timestamp را ترجمه کنه ! یاد زمانی افتادم که یک نفر به من گفت لوح فشرده بده و مونده بودم چی میگه این بابا ! لوح فشرده دگه چی صیغه ایه ؟ بعد که فهمیدم منظورش CD و ترجمه Compact Disc هست هنگ کرده بودم‌ ! خدایی این ها را نباید ترجمه کرد.


مورد عجیبی نیست ! شاید اولین بار به گوشتان خورده ولی همه جا یا برچسب زمان (که این یکم بهتره) یا مهر زمان است. حتی من در یکی از کتاب های آموزش PHP هم دیدم زده مهر زمان.


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


در مورد نوع ذخیره هم جایی خوندم Mysql خودش datetime را به صورت timestamp ذخیره میکنه اما مطمئن نیستم.

ما کلا تو mysql پنج نوع داده تاریخ داریم. نوع timetamp اش خصوصیت اش این است که زمان ذخیره سازی از timezone (منطقه زمانی) جاری به utc تبدیل می کند و هنگام بازیابی از utc به timezone جاری.

hamedarian2009
دوشنبه 28 اردیبهشت 1394, 22:45 عصر
فکر میکنم timestamp بهترین روش ذخیره سازی تاریخ و زمان هست

من هم نظرم اینه که نباید هرچیزی رو ترجمه کرد چون بی معنی میشه و اینکه وقتی ما داریم با انگلیسیش کار میکنیم و ذهنمان به تلفظ انگلیسیش عادت داره چه کاریه بیاییم تغییر بدیم توی صنف پزشکان هم رایجه که از لغات تخصصی زیاد استفاده میکنند

Unique
سه شنبه 29 اردیبهشت 1394, 02:47 صبح
مورد عجیبی نیست ! شاید اولین بار به گوشتان خورده ولی همه جا یا برچسب زمان (که این یکم بهتره) یا مهر زمان است. حتی من در یکی از کتاب های آموزش PHP هم دیدم زده مهر زمان.

راستش من کتاب های PHP را تا حالا نخوندم و نمیونم وقتی سایتی مثل php.net و کلی منبع آنلاین هست چرا کسی باید کتاب منتشر کنه ! (نظر شخصی) برای من به این دلیل عجیب بود که توی این انجمن چنین ترجمه ای از timestamp را ندیده بودم !


پس چیکارشون کنیم ؟ :) من میگم انگلیسی را هم ولش کنیم ترجمه نکنیم :)
به نظر من ترجمه باید از اصل کلمه بهتر یا برابر باشه ! مثلا یارانه خیلی کلمه مناسبی در برابر Subsidy هست حتی رایانه هم در مقابل کامپیوتر قابل قبوله ! پیامک به جای اس ام اس و مثال های دیگه اما چرخ بال و کش لقمه و مهر زمان و برچسب زمان یه حالیه !


ا کلا تو mysql پنج نوع داده تاریخ داریم. نوع timetamp اش خصوصیت اش این است که زمان ذخیره سازی از timezone (منطقه زمانی) جاری به utc تبدیل می کند و هنگام بازیابی از utc به timezone جاری.
شما به خصوصیاتش اشاره کردین اما بحث من اینه که Date و DateTime به نظر من مکفی هستند البته بسته به نوع استفاده و گزارش گیری و غیره داره. نمیشه گفت سلیقه ایه اما هر کسی با یک شکل راحت تره !