2015-06-02 5 views
9

यह वास्तव में एक प्राथमिक प्रश्न हो सकता है, लेकिन मैंने कभी भी TIMESTAMP() के साथ कोई तालिका नहीं बनाई है, और मैं पैरामीटर के रूप में क्या रखना है इस पर उलझन में हूं। उदाहरण के लिए, यहाँ के लिए:MySQL वर्कबेंच में टाइमस्टैम्प के रूप में कॉलम सेट करना?

enter image description here

मैं सिर्फ बेतरतीब ढंग से TIMESTAMP(20) शब्दों में कहें, लेकिन 20 एक पैरामीटर के रूप यहाँ क्या दर्शाता है? यहां क्या रखा जाना चाहिए?

मैंने सवाल गुमराह किया, लेकिन वास्तव में कुछ भी नहीं हुआ ... वैसे भी मैं एसक्यूएल के लिए नया हूं, इसलिए किसी भी मदद की सराहना की जाएगी, धन्यवाद !!

+0

अच्छा संदर्भ: https://dev.mysql.com/doc/refman/5.7/en/datetime.html –

उत्तर

7

संपादित

MySQL 5.6.4 के रूप में, डेटाप्रकार TIMESTAMP(n) आंशिक सेकंड के लिए परिशुद्धता के n (0 6) दशमलव अंक निर्दिष्ट करता है।

MySQL 5.6 से पहले, MySQL TIMESTAMP डेटाटाइप के हिस्से के रूप में संग्रहीत अंशकालिक सेकंड का समर्थन नहीं करता था।

संदर्भ: https://dev.mysql.com/doc/refman/5.6/en/fractional-seconds.html


हम एक TIMESTAMP पर लंबाई संशोधक निर्दिष्ट करने की आवश्यकता नहीं है। हम केवल TIMESTAMP निर्दिष्ट कर सकते हैं।

लेकिन ध्यान रखें कि तालिका में परिभाषित पहला TIMESTAMP कॉलम स्वचालित प्रारंभिकरण और अद्यतन के अधीन है। उदाहरण के लिए:

create table foo (id int, ts timestamp, val varchar(2)); 

show create table foo; 

CREATE TABLE `foo` (
`id` INT(11) DEFAULT NULL, 
`ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
`val` VARCHAR(2) DEFAULT NULL 
) 

क्या एक डेटाप्रकार निम्नलिखित कोष्ठक में चला जाता है क्या डेटाप्रकार है पर निर्भर करता है, लेकिन कुछ डेटाटाइप्स के लिए, यह लंबाई संशोधक है।

कुछ डेटाटाइप के लिए, लंबाई संशोधक मूल्यों की अधिकतम लंबाई को प्रभावित करता है जिसे संग्रहीत किया जा सकता है। उदाहरण के लिए, VARCHAR(20) 20 अक्षरों को संग्रहीत करने की अनुमति देता है। और DECIMAL(10,6) दशमलव बिंदु से पहले चार अंकों के साथ संख्यात्मक मानों और छह के बाद, और 99 99.9 99 999 से 9999.9 99 999 की प्रभावी श्रृंखला के लिए अनुमति देता है।

अन्य प्रकारों के लिए, लंबाई संशोधक यह उन मानों की सीमा को प्रभावित नहीं करता है जिन्हें संग्रहीत किया जा सकता है। उदाहरण के लिए, INT(4) और INT(10) दोनों पूर्णांक हैं, और दोनों पूर्णांक डेटाटाइप के लिए अनुमति के लिए मानों की पूरी श्रृंखला को स्टोर कर सकते हैं।

उस मामले में उस लम्बाई संशोधक क्या करता है केवल सूचनात्मक है। यह अनिवार्य रूप से एक अनुशंसित प्रदर्शन चौड़ाई निर्दिष्ट करता है। एक क्लाइंट इसका उपयोग यह निर्धारित करने के लिए कर सकता है कि कॉलम से मूल्य प्रदर्शित करने के लिए पंक्ति पर कितना स्थान आरक्षित करना है। एक ग्राहक को ऐसा करने की ज़रूरत नहीं है, लेकिन वह जानकारी उपलब्ध है।

संपादित

एक लंबाई संशोधक नहीं रह गया है TIMESTAMP डेटाप्रकार के लिए स्वीकार किया जाता है। (यदि आप MySQL का वास्तव में पुराना संस्करण चला रहे हैं और इसे स्वीकार कर लिया गया है, तो इसे अनदेखा कर दिया जाएगा।)

+3

शायद यहाँ उल्लेख के लायक: आंशिक दूसरा समर्थन 5.6.4 के रूप में मौजूद है: http://dev.mysql.com/doc/refman/5.6/en/fractional-seconds.html –

+0

उत्तर MySQL संस्करण> = 5.6.4 के साथ TIMESTAMP में आंशिक सेकंड के लिए समर्थन नोट करने के लिए अद्यतन किया गया। – spencer7593

2

यह वाक्यविन्यास 4.1 से पहले, MySQL के पुराने संस्करण से प्रतीत होता है। इसे 5.5 https://dev.mysql.com/doc/refman/5.0/en/upgrading-from-previous-series.html

से पूरी तरह से हटा दिया गया है, इसलिए यहां चौड़ाई निर्दिष्ट करने में कोई बिंदु नहीं है, क्योंकि इसे अनदेखा किया जा सकता है। तुम कौन सा संस्करण चला रहे हो?

4

यदि आप पैरामीटर के रूप में उदाहरण (2) के लिए डालते हैं, तो मेरे मित्र की सटीकता को ठीक करता है, आपको एक तिथि मिल जाएगी एक परिशुद्धता जैसे: 2015-12-29 00:00:00। , जिस तरह से अधिकतम मूल्य 6 है।

1

MySQL 5.7 इस वाक्यविन्यास का समर्थन करने के लिए प्रतीत होता है। पारित तर्क सटीक है। TIMESTAMP (3) मिलीसेकंद परिशुद्धता की अनुमति देगा। 6 अनुमत परिशुद्धता की उच्चतम राशि है।

संदर्भ: http://dev.mysql.com/doc/refman/5.7/en/datetime.html

संबंधित मुद्दे