2010-03-13 13 views
7

के साथ एक तिथि (makedate?) कैसे सेट करूं मेरे पास तीन कॉलम, वाई, एम, और डी (वर्ष, महीना, और दिन) है और इसे एक तिथि के रूप में स्टोर करना चाहते हैं।MYSQL: मैं महीने, दिन और वर्ष

ऐसा करने के लिए मैं अपने एसक्यूएल पर किस फ़ंक्शन का उपयोग करूंगा?

स्पष्ट रूप से वर्ष का वर्ष और दिन (नीचे देखें) का उपयोग करता है, लेकिन मेरे पास महीना है।

मुझे पता है कि मैं (y, m, d) से स्ट्रिंग का निर्माण करके STR_TO_DATE (str, format) का उपयोग कर सकता हूं, लेकिन मुझे लगता है कि ऐसा करने का एक आसान तरीका है।

दें संदर्भ

MAKEDATE(year,dayofyear)

एक तिथि, भी वर्ष और दिन का साल मूल्यों देता है। dayofyear 0 से अधिक होना चाहिए या नतीजा पूर्ण है।

उत्तर

8

मेरा मानना ​​है कि आप उचित प्रारूप में एक स्ट्रिंग का उपयोग कर सकते हैं:

UPDATE table SET my_date = '2009-12-31'; 

संपादित करें: हाँ आप कर सकते हैं, बस MySQL 5.1 में सत्यापित किया।

5

यह पठनीयता पर उच्च नहीं है, लेकिन निम्न काम करेगा:

SELECT'1900-01-01' + INTERVAL y-1900 YEAR + INTERVAL m-1 MONTH + INTERVAL d-1 
DAY FROM ... 

सुनिश्चित नहीं हैं कि यह किसी भी अधिक concat और STR_TO_DATE का उपयोग करने से कुशल है।

1

.. मैं आशा है कि यह बाहर काम wil

str_to_date(concat(year(curdate()) , '-', month(a.dob) , '-', day(a.dob)) , '%Y-%m-%d') 

कहाँ a.dob मेरे कॉलम का नाम जो आज

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