दिलचस्प पोस्ट
उपयोगकर्ता 'रूट @ लोकलहोस्ट' के लिए प्रवेश निषेध (पासवर्ड का उपयोग करते हुए: नहीं) कैसे स्क्वैश git में धक्का दिया गया है के बाद? पीएचपी में एक जटिल एसोसिएटिव अर्रे पर परावर्तित टाइमर का उपयोग करके जावा में हर एक्स सेकंड में बेतरतीब ढंग से प्रदर्शित कैसे किया जा सकता है? ImageMagick – "CORE_RL_magick_.dll नहीं मिला" या रूबी 1.9.2 के साथ खिड़कियों पर RMagick कैसे स्थापित करें एएसपीएनट एमवीसी (आरसी 5) में 404 एचटीपी त्रुटि हैंडलर स्कैनर बनाम स्ट्रिंगटोकनाइज़र बनाम स्ट्रिंग। स्प्लिट जावास्क्रिप्ट की तिथि को सी # अजाक्स द्वारा क्या हार्डवेयर की प्रेस के लिए सुनवाई करने वाली एक एंड्रॉइड सेवा बनाना संभव है? मैं जावा में एक अभिभावक-अंतिम / बाल-प्रथम क्लासलोडर कैसे बना सकता हूं, या पुराने सीरियल में पहले से ही लोड किए गए पुराने जेर्सस संस्करण को ओवरराइड करने के लिए कैसे करें? आइवी एक निर्भरता को हल करने में विफल रहता है, कारण खोजने में असमर्थ एएसपी.नेट कोर में एचटीटीपी कॉन्टैक्ट। कैसे प्राप्त करें? '->' (तीर) क्या ग्रेडेल के निर्भरता ग्राफ़ में होता है? पेलिकन 3.3 पेलिकन-क्विकस्टार्ट त्रुटि "मान त्रुटि: अज्ञात स्थान: यूटीएफ -8" Mysqli get_result वैकल्पिक

डेटमैटम डाटाटिप के लिए डिफ़ॉल्ट मान के रूप में अब सेट करें ()?

मेरे पास तालिका में दो कॉलम हैं, अर्थात् registerDate and lastVisitDate दिनांक registerDate and lastVisitDate जिसमें registerDate and lastVisitDate डाटा प्रकार शामिल हैं registerDate and lastVisitDate मैं निम्नलिखित करना चाहता हूं

  1. MySQL अब रजिस्टर रजिस्टर डिफ़ॉल्ट मूल्य सेट करें ()
  2. 0000-00-00 00:00:00 अंतिम विजिटडेट डिफ़ॉल्ट मान सेट करें इसके बजाय रिक्त स्थान के बजाय यह डिफ़ॉल्ट रूप से उपयोग करता है।

क्योंकि तालिका पहले से मौजूद है और मौजूदा रिकॉर्ड हैं, मैं संशोधित तालिका का उपयोग करना चाहूंगा मैंने नीचे दिए गए कोड के दो टुकड़े का उपयोग करने की कोशिश की है, लेकिन न ही काम करता है

 ALTER TABLE users MODIFY registerDate datetime DEFAULT NOW() ALTER TABLE users MODIFY registerDate datetime DEFAULT CURRENT_TIMESTAMP; 

यह मुझे त्रुटि देता है: ERROR 1067 (42000): Invalid default value for 'registerDate'

क्या मेरे लिए MySQL में डिफ़ॉल्ट डेट टाइम वैल्यू को अभी सेट करना संभव है?

Solutions Collecting From Web of "डेटमैटम डाटाटिप के लिए डिफ़ॉल्ट मान के रूप में अब सेट करें ()?"

MySQL 5.6.5 के अनुसार, आप गतिशील डिफ़ॉल्ट मान के साथ DATETIME प्रकार का उपयोग कर सकते हैं:

 CREATE TABLE foo ( creation_time DATETIME DEFAULT CURRENT_TIMESTAMP, modification_time DATETIME ON UPDATE CURRENT_TIMESTAMP ) 

या यहां तक ​​कि दोनों नियमों को गठबंधन करें:

 modification_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 

संदर्भ:
http://dev.mysql.com/doc/refman/5.7/en/timestamp-initialization.html
http://optimize-this.blogspot.com/2012/04/datetime-default-now-finally-available.html

5.6.5 से पहले, आपको TIMESTAMP डेटा प्रकार का उपयोग करने की आवश्यकता होती है, जो स्वचालित रूप से जब भी रिकॉर्ड संशोधित हो तब अपडेट होता है। दुर्भाग्य से, हालांकि, प्रति तालिका केवल एक ऑटो-अपडेट किया गया TIMESTAMP फ़ील्ड मौजूद हो सकता है।

 CREATE TABLE mytable ( mydate TIMESTAMP ) 

देखें: http://dev.mysql.com/doc/refman/5.1/en/create-table.html

यदि आप MySQL को UPDATE पर टाइमस्टैम्प मान को अपडेट करने से रोकना चाहते हैं (इसलिए कि यह केवल INSERT पर ट्रिगर करता है) आप परिभाषा को बदल सकते हैं:

 CREATE TABLE mytable ( mydate TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) 

मैं नए आवेषण के लिए अब एक डेटैंम फ़ील्ड को सेट करने के लिए एक वैकल्पिक हल के रूप में ट्रिगर का उपयोग करता हूं:

 CREATE TRIGGER `triggername` BEFORE INSERT ON `tablename` FOR EACH ROW SET NEW.datetimefield = NOW() 

इसे अपडेट के लिए भी काम करना चाहिए

जॉन एंड लियोनार्डो द्वारा दिए गए उत्तर में टाइमस्टैंप फ़ील्ड में परिवर्तित होना शामिल है। यद्यपि यह प्रश्न (संग्रह रजिस्टर और अंतिम विज़िटडा स्टोरेज) में प्रस्तुत उपयोग केस के लिए शायद ठीक है, यह एक सार्वभौमिक समाधान नहीं है दिनचर्या बनाम टाइमस्टैम्प प्रश्न देखें

मेरा समाधान

 ALTER TABLE `table_name` MODIFY COLUMN `column_name` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP; 

यूरेका !!!


उन सभी लोगों के लिए जो MySQL में डिफ़ॉल्ट DATETIME मान सेट करने की कोशिश कर रहे दिल को खो दिया है, मुझे पता है कि आपको कैसा महसूस होता है / महसूस होता है तो यहां यह है:

 `ALTER TABLE `table_name` CHANGE `column_name` DATETIME NOT NULL DEFAULT 0 

सावधानीपूर्वक ध्यान रखें कि मैंने 0 के आसपास सिंगल उद्धरण / डबल कोट्स नहीं जोड़े हैं I


महत्वपूर्ण अद्यतन :

यह जवाब बहुत पहले वापस पोस्ट किया गया था। उसके बाद, यह मेरे (शायद नवीनतम) MySQL की स्थापना पर काम किया और मुझे यह साझा करना पसंद आया। इस समाधान का उपयोग करने का निर्णय लेने से पहले कृपया नीचे दी गई टिप्पणियों को पढ़ें

mysql 5.6 डॉक्स का कहना है कि CURRENT_TIMESTAMP का समय TIMESTAMP और DATETIME डेटा प्रकार दोनों के लिए डिफ़ॉल्ट के रूप में उपयोग किया जा सकता है:

http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html

सबसे अच्छा तरीका ट्रिगर करना है:

 /************ ROLE ************/ drop table if exists `role`; create table `role` ( `id_role` bigint(20) unsigned not null auto_increment, `date_created` datetime, `date_deleted` datetime, `name` varchar(35) not null, `description` text, primary key (`id_role`) ) comment=''; drop trigger if exists `role_date_created`; create trigger `role_date_created` before insert on `role` for each row set new.`date_created` = now(); 
 `ALTER TABLE `table_name` CHANGE `column_name` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 

अपडेट पर टाइमस्टैम्प को अपडेट करने के लिए उपयोग किया जा सकता है

संस्करण mysql 5.6.5 और नए पर, आप सटीक डेटासेट का उपयोग कर सकते हैं और डिफ़ॉल्ट मान भी सेट कर सकते हैं। यद्यपि एक सूक्ष्म बिट है, जो सटीक मान में पास है और दिन-समय और नाउ () फंक्शन कॉल दोनों के लिए।

यह उदाहरण काम करता है:

  ALTER TABLE my_table MODIFY created datetime(6) NOT NULL DEFAULT NOW(6); 

यह उदाहरण काम नहीं करता है:

  ALTER TABLE my_table MODIFY created datetime(6) NOT NULL DEFAULT NOW(); 

निश्चित नहीं है कि यह अभी भी सक्रिय है लेकिन यह यहां जाता है।

अब () के लिए डिफ़ॉल्ट सेट करने के बारे में, मुझे नहीं लगता कि DATETIME डेटा प्रकार के लिए संभव है यदि आप उस डेटा प्रकार का उपयोग करना चाहते हैं, तो दिनांक को सेट करें जब आप इस तरह से सम्मिलित करते हैं:

 INSERT INTO Yourtable (Field1, YourDateField) VALUES('val1', (select now())) 

MySQL का मेरा संस्करण 5.5 है

यह मेरे लिए काम करता है, MySQL का प्रयोग कर रहा है:

 ALTER TABLE `table_name` MODIFY `column_name` datetime NOT NULL DEFAULT NOW(); 

यह मेरे लिए काम किया है – बस मेरी मेज के लिए अद्यतन करने के लिए INSERT बदल दिया है।

 INSERT INTO Yourtable (Field1, YourDateField) VALUES('val1', (select now()))