2011-03-20 16 views
9

जब मैं एक टेबल बनाता हूं और mysql में टाइप दिनांक का क्षेत्र बनाता हूं, तो यह 0000-00-00 जैसी तारीख संग्रहीत करता है। क्या प्रारूप को 'डी-एम-वाई' में बदलना संभव है?MySQL दिनांक प्रारूप

उत्तर

12

MySQL Reference - 10.5. Data Type Storage Requirements पर जाएं

के लिए खोजें: दिनांक और समय के प्रकार के लिए भंडारण आवश्यकताओं

तिथियां आंतरिक A three-byte integer packed as DD + MM×32 + YYYY×16×32

के रूप में जमा लेकिन, कर रहे हैं यदि आप के लिए एक तिथि स्तंभ चयन प्रदर्शन, यह कुछ तरह से दिखाया जा सकता है है, इसलिए यह सह 0000-00-00 के रूप में बाहर mes। यह नहीं कि विशिष्ट प्रारूप के साथ एक चार (10) के रूप में जमा है।

यदि, प्रदर्शन के लिए, आपको एक विशिष्ट प्रारूप देखने की आवश्यकता है, तो आप इसे Date_Format() का उपयोग करके एक विशिष्ट प्रारूप में VARCHAR में परिवर्तित कर सकते हैं। हालांकि, ध्यान रखें कि यदि आप प्रोग्रामिंग टूल में क्वेरी का उपयोग कर रहे हैं, तो यह आप क्या करना चाहते हैं। आप कच्चे दिनांक मान चाहते हैं, प्रदर्शन प्रयोजनों के लिए, वहाँ जो कुछ भी प्रोग्रामिंग वातावरण आप उपयोग से एक समान स्वरूपण समारोह किया जाएगा।

आप DATE_FORMAT में संदर्भ से देख सकते हैं, तो आप का उपयोग करने के '%d-%m-%Y', उदा चाहते हैं

SELECT col1, col2, DATE_FORMAT(datecolumn, '%d-%m-%Y') AS datecolumn, more1... 
FROM sometable 
.... 
2

नहीं, इसे दिनांक फ़ील्ड के रूप में रखते हुए यह संभव नहीं है। मेरा सुझाव है कि आप इसे उस प्रारूप में रखें - ताकि आप सभी mysql डेट फ़ंक्शंस का उपयोग कर सकें - और जब आप इसे उपयोगकर्ताओं को प्रदर्शित करते हैं तो इसे केवल तभी बदलें।

आप इसे आवेदन पक्ष क्या कर सकते हैं या तो या सीधे एक प्रश्न के साथ:

SELECT DATE_FORMAT(date_field, "%d-%m-%Y") FROM ... 
+0

मेरे पास एक और तरीका है, मैं strtotime() द्वारा int टाइप टाइमस्टैम्प स्टोर कर सकता हूं, फिर इसे दिनांक() फ़ंक्शन के साथ उपयोग किया जा सकता है। मुझे यकीन नहीं है कि यह एक अच्छा तरीका है। –

+1

हां लेकिन एक int टाइमस्टैम्प पूरी तरह से पढ़ा जा सकता है। MySQL डिफ़ॉल्ट प्रारूप आपको इसे संसाधित किए बिना दिनांक को समझने देता है। इसके अलावा, आप उपयोग नहीं कर सकते तिथि कार्य (दिन, महीने, अंतराल, आदि निकालने के लिए) यदि आप INTs –

5

नहीं, यह संभव नहीं है। लेकिन आप उस तरीके का चयन करने के लिए DATE_FORMAT का उपयोग कर सकते हैं।

SELECT Date_format(mydatefield, '%d-%m-%Y') 
FROM table 
+0

Ouh महान का उपयोग करें। मैं समझ गया। सबको धन्यवाद –

0

आप इस एसक्यूएल का उपयोग कर सकते

SELECT DATE_FORMAT(date_field, "%d-%m-%Y") FROM ... 

या आप PHP का उपयोग कर रहे हैं अगर आप एक ही परिणाम प्राप्त कर सकते हैं:

echo date('d-m-Y', $originalDate); //You will get something like 09-08-2013 (Aug 8th, 2013) 
echo date('j-n-y', $originalDate); //You will get something like 9-8-13 (Aug 8th, 2013) 
0

मैं दोनों के लिए उपयोग देखते हैं, लेकिन मैं संदर्भ लेआउट के रूप में इस लेआउट को और अधिक उपयोगी पाएं:

SELECT DATE_FORMAT('2004-01-20' ,'%Y-%m-01'); 

enter image description here

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