MySQL में वर्तमान दिनांक/समय लौटाते समय, आप कई प्रकार के फ़ंक्शन चुन सकते हैं। इनमें से अधिकतर किसी अन्य फ़ंक्शन के लिए समानार्थी हैं।
हालांकि, दो कार्य हैं जो एक ही काम करते प्रतीत होते हैं, लेकिन वास्तव में, थोड़ा अलग हैं। मैं जिन कार्यों का उल्लेख कर रहा हूं वे हैं SYSDATE()
और NOW()
।
SYSDATE() और Now() के बीच का अंतर
दोनों फ़ंक्शन वर्तमान दिनांक और समय लौटाते हैं। हालाँकि, यहाँ वे भिन्न हैं:
SYSDATE()
वह समय लौटाता है जिस पर यह क्रियान्वित होता है।NOW()
एक स्थिर समय देता है जो उस समय को इंगित करता है जिस पर कथन निष्पादित करना शुरू किया।SET TIMESTAMP
स्टेटमेंटNOW()
द्वारा लौटाए गए मान को प्रभावित करता है लेकिनSYSDATE()
. तक नहीं ।
तो कई मामलों में, आप शायद एक ही परिणाम प्राप्त करेंगे, चाहे आप किसी भी फ़ंक्शन का उपयोग करें। हालाँकि, यदि आपका कथन अधिक जटिल है और चलने में कुछ समय लगता है, तो आप किस फ़ंक्शन का उपयोग करते हैं, इसके आधार पर आप वापसी मूल्य में काफी बड़ा अंतर प्राप्त कर सकते हैं।
उदाहरण
आपके द्वारा उपयोग किए जाने वाले फ़ंक्शन के आधार पर, वापसी मूल्य कैसे भिन्न हो सकता है, यह प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।
SELECT SYSDATE(), SLEEP(10) AS '', SYSDATE(), NOW(), SLEEP(10) AS '', NOW();चुनें
परिणाम:
+---------------------+---+---------------------+---------------------+---+---------------------+ | SYSDATE() | | SYSDATE() | NOW() | | NOW() | +---------------------+---+---------------------+---------------------+---+---------------------+ | 2018-06-23 11:55:26 | 0 | 2018-06-23 11:55:36 | 2018-06-23 11:55:26 | 0 | 2018-06-23 11:55:26 | +---------------------+---+---------------------+---------------------+---+---------------------+
तो इस उदाहरण में, मैं SYSDATE()
चलाता हूं दो बार, लेकिन बीच में 10 सेकंड के ठहराव के साथ। मैं फिर वही काम करता हूं NOW()
।
जैसा कि अपेक्षित था, 10 सेकंड का ठहराव दूसरे SYSDATE()
. के वापसी मूल्य को प्रभावित करता है लेकिन दूसरा नहीं NOW()
. वास्तव में, NOW()
. के दोनों उदाहरणों के लिए मान SYSDATE()
. के पहले उदाहरण के समान ही हैं , जो तब है जब स्टेटमेंट चलना शुरू हुआ।
SYSDATE() को अभी के लिए एक उपनाम बनाना()
यदि इन दो कार्यों के बीच का अंतर आपको समस्या पैदा कर रहा है, तो आपके पास वास्तव में SYSDATE()
बनाने का विकल्प है। NOW()
. के लिए एक उपनाम ।
ऐसा करने के लिए, --sysdate-is-now
. का उपयोग करें सर्वर कमांड विकल्प। अधिक जानकारी के लिए, MySQL प्रलेखन वेबसाइट पर –sysdate-is-now देखें।