जैसा कि दिनांक और समय के साहित्य में बताया गया है :
<ब्लॉकक्वॉट>
MySQL DATE को पहचानता है
इन स्वरूपों में मान:
-
'YYYY-MM-DD'. में एक स्ट्रिंग के रूप में या'YY-MM-DD'प्रारूप। एक "आराम से" सिंटैक्स की अनुमति है:किसी भी विराम चिह्न का उपयोग दिनांक भागों के बीच सीमांकक के रूप में किया जा सकता है। उदाहरण के लिए,'2012-12-31','2012/12/31','2012^12^31', और'example@sqldat.com @31'समकक्ष हैं। -
'YYYYMMDD'. में कोई सीमांकक वाली स्ट्रिंग के रूप में या'YYMMDD'प्रारूप, बशर्ते कि स्ट्रिंग एक तिथि के रूप में समझ में आता है। उदाहरण के लिए,'20070523'और'070523''2007-05-23'. के रूप में व्याख्या की जाती है , लेकिन'071332'अवैध है (इसमें निरर्थक महीने और दिन के हिस्से हैं) और'0000-00-00'. बन जाता है । -
YYYYMMDD. में से किसी एक संख्या के रूप में याYYMMDDप्रारूप, बशर्ते कि संख्या एक तिथि के रूप में समझ में आए। उदाहरण के लिए,19830905और830905'1983-09-05'. के रूप में व्याख्या की जाती है ।
इसलिए, स्ट्रिंग '08/25/2012' मान्य MySQL दिनांक शाब्दिक नहीं है। आपके पास चार विकल्प हैं (वरीयता के कुछ अस्पष्ट क्रम में, आपकी आवश्यकताओं के बारे में और जानकारी के बिना):
-
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" }); -
MySQL के
STR_TO_DATE( )स्ट्रिंग को कनवर्ट करने के लिए फ़ंक्शन:INSERT INTO user_date VALUES ('', '$name', STR_TO_DATE('$date', '%m/%d/%Y')) -
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))
-
-
स्ट्रिंग को एक वैध शाब्दिक में मैन्युअल रूप से हेरफेर करें:
$parts = explode('/', $_POST['date']); $date = "$parts[2]-$parts[0]-$parts[1]";
चेतावनी
-
आपका कोड SQL इंजेक्शन के प्रति संवेदनशील है। आप वास्तव में तैयार किए गए कथनों का उपयोग करना चाहिए , जिसमें आप अपने वेरिएबल्स को पैरामीटर के रूप में पास करते हैं जिनका मूल्यांकन SQL के लिए नहीं किया जाता है। यदि आप नहीं जानते कि मैं किस बारे में बात कर रहा हूं, या इसे कैसे ठीक किया जाए, तो बॉबी टेबल्स .
-
साथ ही, जैसा कि परिचय में बताया गया है
<ब्लॉकक्वॉट>mysql_*. पर PHP मैनुअल अध्याय के लिए कार्य:यह एक्सटेंशन PHP 5.5.0 के रूप में बहिष्कृत है, और नया कोड लिखने के लिए अनुशंसित नहीं है क्योंकि इसे भविष्य में हटा दिया जाएगा। इसके बजाय, या तो mysqli या PDO_MySQL एक्सटेंशन का इस्तेमाल किया जाना चाहिए। यह भी देखें MySQL API अवलोकन MySQL API चुनते समय और सहायता के लिए।
-
ऐसा लगता है कि आप किसी
<ब्लॉकक्वॉट>DATETIMEका उपयोग कर रहे हैं याटाइमस्टैम्पदिनांक मान रखने के लिए कॉलम; मेरा सुझाव है कि आप MySQL केDATE. का उपयोग करने पर विचार करें इसके बजाय टाइप करें। जैसा कि दडेटमें बताया गया है ,DATETIME, औरटाइमस्टैम्पप्रकार :दिनांकप्रकार का उपयोग दिनांक भाग वाले मानों के लिए किया जाता है लेकिन कोई समय भाग नहीं होता है। MySQL'YYYY-MM-DD'. में DATE मानों को पुनः प्राप्त और प्रदर्शित करता है प्रारूप। समर्थित श्रेणी है'1000-01-01'करने के लिए'9999-12-31'।डेटटाइमप्रकार का उपयोग उन मानों के लिए किया जाता है जिनमें दिनांक और समय दोनों भाग होते हैं। MySQLDATETIMEको पुनः प्राप्त और प्रदर्शित करता है'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'यूटीसी.