ماهو أنسب نوع حقل لتخزين التاريخ والوقت في MySQL ??
وماهي طريقة توليد هذا التاريخ لتخزينه في الحقل في PHP ??
ماهو أنسب نوع حقل لتخزين التاريخ والوقت في MySQL ??
وماهي طريقة توليد هذا التاريخ لتخزينه في الحقل في PHP ??
__________________
نحن أمة إقرأ التي لا تقرأ
DATETIME لان عمرة اكثر من العام 2032، المبرمج المحترف هو ايضا مبرمج كسول ولا يريد ان يضغط على ازرار اكثر، فالحل هو ()NOW
اي اذا كان الجدول اسمة topics وله الحقول (id,title,body,post_date)
فتخزينة في الMySQL هو
كود PHP:
mysql_query('insert into topics values (NULL,"'.$title.'","'.$body.'",NOW()');
السلام عليكم
اخي هيلابي الا تعتقد ان احسن طريق هي تخزين الوقت بدالة time الموجودة في php لسهولة التحقق من الوقت ...
دالة now الموجودة مع mysql تخزن الوقت بهذه الطريقة
2008-02-18 08:03:24
اعتقد ان هناك صعوبة في التحقق من الوقت بهذه الطريقة والله اعلم
hilaby : شكراً على ردك الجميل
Nadorino : كأني أرى الحل عندك
__________________
نحن أمة إقرأ التي لا تقرأ
Nadorino اريد ان ارى حلك، ربما تعرف شيء انا لا اعرفة، شاركنا
- اعتقد الافضل يكون حسب برنامج , احيانا تحتاج فقط السنه ولا تحتاج الوقت او العكس.
- الافضل في الادء هو اصغرها حجما , بحيث لا يستهلك مساحه عند الفهرسه او التخزين ولا يستهلك موارد عن الترتيب( عباره order by).
نجد ان TIMESTAMP هو اصغرها حجما ويحتوى على الوقت والتاريخ (4 بايت)
MySQL AB :: MySQL 5.0 Reference Manual :: 9.5 Data Type Storage Requirements
__________________
ضيف الله العتيبي مبرمج حر و مهندس معتمد من زيند (ZCE)
الاتصال: daif@daif.net او جوال: 0556639884
الخدمات: تقديم استشارات برمجيه, تطوير بوابات/خدمات إلكترونيه للقطاع العام او الخاص .
بل تعرفه ...
ما قصدته انا, هو ان يتم تخزين الوقت عن طريق دالة
في حقل من نوعكود PHP:
time()
كود:varchar(15)وعند الاستخراج يتم التعامل معه عن طريق دالة dateكود PHP:
$date=time();
mysql_query('insert into topics values (NULL,"'.$title.'","'.$body.'",".$date."');
واسف على هذا التدخل ...كود PHP:
// $row['date'] = استخراج من القاعدة ...
// التاريخ كامل
echo date("Y m d h:m:s",$row['date']);
echo '<br />';
// الساعة فقط
echo date("h:m:s",$row['date']);
Nadorino معليش المرة هذة انا لا اوافقك في الرأي، الاسباب
1- الحقل varchar ماهو الا مجموعة من الاحرف characters اي اذا جعلته في هذة الحالة، يمكنك فقط اضهار المعلومة كما هي، بدون اي تعديلات
2- الحقل varchar العمليات الحسابية فيها بطيئة، لان الMySQL سيصعب عليه عملية البحث في ذالك الحقل و ايضا سيصعب علية عملية الترتيب، لان اكثر برامج قواعد البيانات تتعامل مع التواريخ بنظام الUNIX TIME وهو عدد الثواني من العام 1/1/1970. فاذا اردت مثلا ان تستعلم عن الواضيع بين تواربخ معينة، ستضطر اولا الى تخزين البيانات بهاذة الطريقة "اليوم-الشهر-السنة باربع ارقام"
الحل
انا مع الTIMESTAMP ولكن هذا فقط اذا تريد تخزين توقيت حدوث الامر او التاريخ اصدار المقالة مثلا، اما اذا تريد تخزين تاريخ في المستقبل، انا مع الDATETIME في هذة الحالة
1- لان الMySQL لا يحتاج لاي عمليات اضافية لكي يبحث على التاريخ المعين
2- الMySQL له عمليات ودوال عديدة تتعلق بالتاريخ، فلماذا لا تستخدمها
خالد
وصلت المعلومة وفقك الله اخي خالد
Nadorino
اذا تريد اي امثلة برمجية على هذا الموضوع، انا تحت امرك
حسنا ليستفيد الجميع وانا منهم...
Timestamp هي الطريقة الأمثل لتخزين التاريخ والوقت بشكل كامل،
يمكنك البحث ضمنها أيضاً بتحديد Range للوقت أو التاريخ الذي تبحث عنه ..
مع الانتباه إلى رد الأخ ضيف حول طول البيانات المخزنة وتأثيرها على الأداء، هذا يعني أنه عليك دائماً اختيار الحل الأنسب لمشروعك ..
كلام الأخوة جميل جداً ، وكل الردود مفيدة ما شاء الله ..
لكن [سؤال] هل يتم تخزين Timestamp في حقل Integer ؟ لاني أستخدم Integer حالياً ولا أعلم إن كان سيحدث مشاكل في المستقبل .. ؟!
تحياتي، أشرف السمهوري
انا ارى ان انسب طريقة لتخزين التاريخ والوقت هو استخدام دالة time()
ويكون حقلها في قاعدة البيانات int(11)
طبعاً لما اخزنها بالـ time() اقدر بعدين اختار طريقة عرضي للتاريخ والوقت
سواء هكذا
2\2\07
او 02\02\2007
او طرق كثيره
هذا ماعندي
__________________
سبحان الله وبحمده ،، سبحان الله العظيم
تذكر هذه الآيه قبل ان تشارك( مَا يَلْفِظُ مِن قَوْلٍ إِلَّا لَدَيْهِ رَقِيبٌ عَتِيدٌ)
أنا أشوف أحسن طريقة هي تخزين التاريخ باستخدام ()time في متغير من نوع varchar
__________________
نحن أمة إقرأ التي لا تقرأ
كما ذكرت وذكر hilaby بشكل مفصل الافضل هو ان يكون نوع الحقل TIMESTAMP ويمكن التحويل بسهوله الى عدد الثواني لكي تخرج الوقت ب date باستخدام دالة UNIX_TIMESTAMP(TIMESTAMP_field) الموجوده في Mysql نفسها , او استخدام FROM_TIMESTAMP(TIMESTAMP_field) لاعادتها بالتنسيق المطلوب مباشره .
مثال
كود PHP:
SELECT UNIX_TIMESTAMP();// 1203507041
- أشرف السمهوري, طير شلوى ربما يكون افضل من استخدام varchar كنوع , لكن ستفقد ميزة التعامل مع الحقل بدوال التاريخ التى تقدمها mysql لك .كود PHP:
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(),'%Y %d %m %h:%i:%s %x');//2008-02-20 14:30:41
- Nadorino, مبرمج إنترنت اطلاقا لا يمكن ان يكون تخزين timestamp في حقل varchar صحيح.
الخلاصه: استخدم حقل TIMESTAMP لتخزين التاريخ والوقت في قاعدة البينات . هل هذا منصف ؟
__________________
ضيف الله العتيبي مبرمج حر و مهندس معتمد من زيند (ZCE)
الاتصال: daif@daif.net او جوال: 0556639884
الخدمات: تقديم استشارات برمجيه, تطوير بوابات/خدمات إلكترونيه للقطاع العام او الخاص .