2012-07-18 17 views
5

मेरे पास MySQL में दिनांक प्रकार कॉलम है। डिफ़ॉल्ट रूप से MySQL दिनांक प्रारूप YYYY/MM/DD है। लेकिन वास्तव में मैं डीडी/एमएम/वाई वाई वाई प्रारूप का उपयोग करना पसंद करता हूं।बदलते प्रारूप दिनांक MySQL

क्या मैं कॉलम दिनांक प्रारूप बदल सकता हूं?

उत्तर

0

echo date('d/m/Y', strtotime($date));

यह अपने मौजूदा तारीख ले यह यूनिक्स समय में कनवर्ट करें और अपने आवश्यक प्रारूप के साथ डेट करने के लिए इसे वापस बदल सकते हैं की कोशिश करो।

+0

प्रश्न MySQL दिनांक प्रारूप पूछ रहा है। – Kermit

2

नहीं, आप DATE, DATETIME या TIMESTAMP कॉलम के लिए डिफ़ॉल्ट MySQL प्रारूप नहीं बदल सकते हैं।

लेकिन आप विभिन्न प्रारूप में स्ट्रिंग के रूप में DATE अभिव्यक्ति को आउटपुट करने के लिए अपने SQL कथन में MySQL फ़ंक्शंस का उपयोग कर सकते हैं।

DATE_FORMAT(datecol , '%m/%d/%Y') AS datecol 

(यही कारण है कि चयन सूची में ठीक काम करेंगे, लेकिन (किसी भी विधेय में इस प्रयोग से बचें यानी कहां खंड)। वहाँ, आप नंगे स्तंभ को संदर्भित करना चाहते हैं, और अपना पसंदीदा प्रारूप 'के तार कन्वर्ट MM/DD/YYYY 'STR_TO_DATE समारोह का उपयोग कर, जैसे

datecol >= STR_TO_DATE('07/16/2012','%m/%d/%Y') 

कहा, मैं तुम सच में बेहतर डेटाबेस के साथ अपने संबंधों में MySQL डिफ़ॉल्ट दिनांक स्वरूप का उपयोग कर परोसा जाएगा, और स्वरूपण से निपटने लगता है कि साथ

आपके कोड में परिवर्तन।

1

अन्य डीबीएमएस में एक डिफ़ॉल्ट प्रारूप है जिसे आप बदल सकते हैं, यहां तक ​​कि सत्र के आधार पर भी। उदाहरण के लिए, ओरेकल में आप बस NLS_DATE_FORMAT सत्र चर बदल सकते हैं और ओरेकल इनपुट और आउटपुट दोनों के लिए आपके कस्टम प्रारूप का उपयोग करेगा। MySQL नहीं करता है।

वहाँ server variables (date_format और datetime_format) की एक जोड़ी है कि आप परीक्षा जा सकती है, इस उद्देश्य के लिए उपयुक्त विचार करने के लिए कर रहे हैं:

mysql> SHOW VARIABLES LIKE 'date%_format'; 
+-----------------+-------------------+ 
| Variable_name | Value    | 
+-----------------+-------------------+ 
| date_format  | %Y-%m-%d   | 
| datetime_format | %Y-%m-%d %H:%i:%s | 
+-----------------+-------------------+ 

के साथ शुरू करने के लिए, वे सर्वर साइड होते हैं और वे गतिशील नहीं हैं (वे रनटाइम पर सेट नहीं किया जा सकता है)। लेकिन बुरा हिस्सा यह है कि वे वास्तव में कभी इस्तेमाल नहीं किया गया था। इन चरों ने कभी भी तिथि प्रारूप को प्रभावित नहीं किया है। वे वर्तमान में हटाए जाने के लिए बहिष्कृत और कतारबद्ध हैं।

समेकित करने के लिए: नहीं, आप नहीं कर सकते। दिनांक प्रारूप तय किए गए हैं।

0

जैसा कि अन्य ने समझाया है कि यह संभव नहीं है, लेकिन यहां वैकल्पिक समाधान है, इसे थोड़ा ट्यूनिंग की आवश्यकता है, लेकिन यह दिनांक कॉलम की तरह काम करता है।

मुझे लगता है कि मैं फ़ॉर्मेटिंग कैसे संभव बना सकता हूं। मुझे एक विचार आया है। इसके लिए ट्रिगर बनाने के बारे में क्या? मेरा मतलब है, टाइप char के साथ कॉलम जोड़ना, और फिर एक MySQL ट्रिगर का उपयोग करके उस कॉलम को अपडेट करना। और वह काम किया! मैं इन प्रश्नों के साथ आने के कुछ चलाता से संबंधित अनुसंधान किया जाता है, और अंत:

CREATE TRIGGER timestampper BEFORE INSERT ON table 
FOR EACH 
ROW SET NEW.timestamp = DATE_FORMAT(NOW(), '%d/%m/%Y'); 
CREATE TRIGGER timestampper2 BEFORE UPDATE ON table 
FOR EACH 
ROW SET NEW.timestamp = DATE_FORMAT(NOW(), '%d/%m/%Y'); 

आप एक स्तंभ प्रकार के रूप में TIMESTAMP या DATE उपयोग नहीं कर सकते, क्योंकि इन को अपने स्वयं के प्रारूप है, और वे स्वचालित रूप से अपडेट करें।

तो, यहां आपका वैकल्पिक टाइमस्टैम्प या दिनांक विकल्प है! उम्मीद है कि इससे मदद मिली, कम से कम मुझे खुशी है कि मुझे यह काम मिल गया।

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