-
आम तौर पर, आपको ऐसा नहीं करना चाहिए:डेटाबेस परत में डेटा प्रकार अपने आप में अर्थपूर्ण (जितना संभव हो) होना चाहिए और उन्हें व्याख्या करने के लिए आपके आवेदन पर निर्भर नहीं होना चाहिए। जैसा कि @Jim DeLaHunt कहते हैं , यह डेटाबेस को आवश्यकतानुसार एसक्यूएल से आसानी से हेरफेर/व्याख्या करने में सक्षम बनाता है (और आपको भविष्य में किसी अन्य एप्लिकेशन कोडबेस से उसी डेटा को आसानी से एक्सेस करने में सक्षम बनाता है)।
MySQL में पांच अस्थायी प्रकार हैं , जिनमें से केवल दो दिनांक और समय दोनों को संग्रहीत करते हैं:
DATETIMEऔरTIMESTAMP।जैसा कि अन्य ने संकेत दिया है, अंतर यह है कि क्या आप टाइमज़ोन को स्टोर करना चाहते हैं - हालांकि मुझे लगता है कि इसे देखने का एक भ्रमित तरीका है:
-
TIMESTAMPसत्र केtime_zoneका उपयोग करता है इनपुट को यूटीसी टाइमस्टैम्प में बदलने के लिए चर और फिर आउटपुट के लिए फिर से वापस:यह समय में एक सटीक क्षण निर्दिष्ट करने के लिए उपयोगी है; -
DATETIMEसमय क्षेत्र की परवाह किए बिना बस तारीख और समय को स्टोर करता है, जैसे कि कैलेंडर और घड़ी की तस्वीर लेना:यह वैश्विक स्तर पर एक ही स्थानीय समय में होने वाली घटना को निर्दिष्ट करने के लिए उपयोगी है।
-
-
जैसे आप किसी अन्य कॉलम की घोषणा करते हैं, वैसे ही आप कॉलम नाम के बाद प्रासंगिक डेटा प्रकार निर्दिष्ट करते हैं।
सावधान रहें कि
TIMESTAMPइसमें अतिरिक्त सुविधाएं हैं, जैसे स्वचालित अपडेट , जिसे आप चाहें तो अपने कॉलम डिक्लेरेशन में अक्षम कर सकते हैं। -
उपरोक्त अस्थायी प्रकारों में से किसी एक का उपयोग करके, आप यह सब करने में सक्षम होंगे (तारीख कार्य जैसी ज़रूरत)।
TIMESTAMP. का डिफ़ॉल्ट आउटपुट औरDATETIMEप्रकार'YYYY-MM-DD HH:MM:SS'. में एक स्ट्रिंग है प्रारूप।विशेष रूप से, दो मानों की तुलना करने से "बीता हुआ समय" उदाहरण के लिए MySQL के
TIMEDIFF()समारोह:SELECT TIMEDIFF(end, start) AS elapsed FROM my_table WHERE ...