Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

PHP mysql सम्मिलित दिनांक प्रारूप

जैसा कि दिनांक और समय के साहित्य में बताया गया है :

<ब्लॉकक्वॉट>

MySQL DATE को पहचानता है इन स्वरूपों में मान:

  • 'YYYY-MM-DD' . में एक स्ट्रिंग के रूप में या 'YY-MM-DD' प्रारूप। एक "आराम से" सिंटैक्स की अनुमति है:किसी भी विराम चिह्न का उपयोग दिनांक भागों के बीच सीमांकक के रूप में किया जा सकता है। उदाहरण के लिए, '2012-12-31' , '2012/12/31' , '2012^12^31' , और '[email protected] @31' समकक्ष हैं।

  • 'YYYYMMDD' . में कोई सीमांकक वाली स्ट्रिंग के रूप में या 'YYMMDD' प्रारूप, बशर्ते कि स्ट्रिंग एक तिथि के रूप में समझ में आता है। उदाहरण के लिए, '20070523' और '070523' '2007-05-23' . के रूप में व्याख्या की जाती है , लेकिन '071332' अवैध है (इसमें निरर्थक महीने और दिन के हिस्से हैं) और '0000-00-00' . बन जाता है ।

  • YYYYMMDD . में से किसी एक संख्या के रूप में या YYMMDD प्रारूप, बशर्ते कि संख्या एक तिथि के रूप में समझ में आए। उदाहरण के लिए, 19830905 और 830905 '1983-09-05' . के रूप में व्याख्या की जाती है ।

इसलिए, स्ट्रिंग '08/25/2012' मान्य MySQL दिनांक शाब्दिक नहीं है। आपके पास चार विकल्प हैं (वरीयता के कुछ अस्पष्ट क्रम में, आपकी आवश्यकताओं के बारे में और जानकारी के बिना):

  1. altField का उपयोग करके समर्थित प्रारूप में दिनांक प्रदान करने के लिए Datepicker को कॉन्फ़िगर करें साथ में इसके altFormat विकल्प :

    <input type="hidden" id="actualDate" name="actualDate"/>
    
    $( "selector" ).datepicker({
        altField : "#actualDate"
        altFormat: "yyyy-mm-dd"
    });
    

    या, यदि आप उपयोगकर्ताओं को YYYY-MM-DD में दिनांक देखकर खुश हैं प्रारूप, बस dateFormat सेट करें विकल्प इसके बजाय:

    $( "selector" ).datepicker({
        dateFormat: "yyyy-mm-dd"
    });
    
  2. MySQL के STR_TO_DATE( ) स्ट्रिंग को कनवर्ट करने के लिए फ़ंक्शन:

    INSERT INTO user_date VALUES ('', '$name', STR_TO_DATE('$date', '%m/%d/%Y'))
    
  3. JQuery से प्राप्त स्ट्रिंग को उस चीज़ में कनवर्ट करें जिसे PHP दिनांक के रूप में समझता है, जैसे दिनांक समय वस्तु:

    $dt = \DateTime::createFromFormat('m/d/Y', $_POST['date']);
    

    और फिर या तो:

    • एक उपयुक्त स्वरूपित स्ट्रिंग प्राप्त करें:

      $date = $dt->format('Y-m-d');
      
    • UNIX टाइमस्टैम्प प्राप्त करें:

      $timestamp = $dt->getTimestamp();
      

      जिसे बाद में सीधे MySQL के FROM_UNIXTIME() समारोह:

      INSERT INTO user_date VALUES ('', '$name', FROM_UNIXTIME($timestamp))
      
  4. स्ट्रिंग को एक वैध शाब्दिक में मैन्युअल रूप से हेरफेर करें:

    $parts = explode('/', $_POST['date']);
    $date  = "$parts[2]-$parts[0]-$parts[1]";
    

चेतावनी

  1. आपका कोड SQL इंजेक्शन के प्रति संवेदनशील है। आप वास्तव में तैयार किए गए कथनों का उपयोग करना चाहिए , जिसमें आप अपने वेरिएबल्स को पैरामीटर के रूप में पास करते हैं जिनका मूल्यांकन SQL के लिए नहीं किया जाता है। यदि आप नहीं जानते कि मैं किस बारे में बात कर रहा हूं, या इसे कैसे ठीक किया जाए, तो बॉबी टेबल्स .

  2. साथ ही, जैसा कि परिचय में बताया गया है mysql_* . पर PHP मैनुअल अध्याय के लिए कार्य:

    <ब्लॉकक्वॉट>

    यह एक्सटेंशन PHP 5.5.0 के रूप में बहिष्कृत है, और नया कोड लिखने के लिए अनुशंसित नहीं है क्योंकि इसे भविष्य में हटा दिया जाएगा। इसके बजाय, या तो mysqli या PDO_MySQL एक्सटेंशन का इस्तेमाल किया जाना चाहिए। यह भी देखें MySQL API अवलोकन MySQL API चुनते समय और सहायता के लिए।

  3. ऐसा लगता है कि आप किसी DATETIME का उपयोग कर रहे हैं या टाइमस्टैम्प दिनांक मान रखने के लिए कॉलम; मेरा सुझाव है कि आप MySQL के DATE . का उपयोग करने पर विचार करें इसके बजाय टाइप करें। जैसा कि डेट में बताया गया है , DATETIME , और टाइमस्टैम्प प्रकार :

    <ब्लॉकक्वॉट>

    दिनांक प्रकार का उपयोग दिनांक भाग वाले मानों के लिए किया जाता है लेकिन कोई समय भाग नहीं होता है। MySQL 'YYYY-MM-DD' . में DATE मानों को पुनः प्राप्त और प्रदर्शित करता है प्रारूप। समर्थित श्रेणी है '1000-01-01' करने के लिए '9999-12-31'

    डेटटाइम प्रकार का उपयोग उन मानों के लिए किया जाता है जिनमें दिनांक और समय दोनों भाग होते हैं। MySQL DATETIME को पुनः प्राप्त और प्रदर्शित करता है 'YYYY-MM-DD HH:MM:SS' . में मान प्रारूप। समर्थित श्रेणी है '1000-01-01 00:00:00' करने के लिए '9999-12-31 23:59:59'

    टाइमस्टैम्प डेटा प्रकार का उपयोग उन मानों के लिए किया जाता है जिनमें दिनांक और समय दोनों भाग होते हैं। टाइमस्टैम्प '1970-01-01 00:00:01' . की एक सीमा है UTC से '2038-01-19 03:14:07' यूटीसी.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. लिनक्स में कमांड लाइन से MySQL डेटाबेस का बैकअप कैसे लें

  2. MySQL में SET autocommit=1 और START TRANSACTION के बीच अंतर (क्या मैंने कुछ याद किया है?)

  3. Postgresql में MySQL के ORDER BY FIELD () का अनुकरण करना

  4. मैं कैसे तय करूं कि कब दाएं जॉइन/लेफ्ट जॉइन या इनर जॉइन का उपयोग करना है या यह कैसे निर्धारित करना है कि कौन सी टेबल किस तरफ है?

  5. संदर्भ:MySQL एक्सटेंशन का उपयोग करके एक आदर्श कोड नमूना क्या है?