मारियाडीबी में, SYSDATE()
और NOW()
फ़ंक्शंस समान हैं कि वे वर्तमान दिनांक और समय लौटाते हैं।
हालांकि, एक महत्वपूर्ण अंतर है:SYSDATE()
उसके द्वारा निष्पादित समय लौटाता है, जबकि NOW()
उस समय को लौटाता है जब कथन निष्पादित करना शुरू कर देता है।
और जब किसी संग्रहीत कार्यविधि या ट्रिगर के भीतर चलाया जाता है, SYSDATE()
वह समय लौटाएगा जो इसे निष्पादित करता है, जबकि NOW()
वह समय लौटाएगा जब संग्रहीत कार्यविधि या ट्रिगर ने क्रियान्वित करना शुरू किया था।
उदाहरण
सबसे पहले, आइए देखें कि ये दोनों कार्य अलग-अलग परिणाम कैसे दे सकते हैं।
SELECT
NOW(),
SYSDATE(),
SLEEP(5),
NOW(),
SYSDATE();
परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
NOW(): 2021-05-27 09:22:08 SYSDATE(): 2021-05-27 09:22:08 SLEEP(5): 0 NOW(): 2021-05-27 09:22:08 SYSDATE(): 2021-05-27 09:22:13
यहां, हमने SLEEP()
. का उपयोग किया है फ़ंक्शन कॉल के दूसरे लॉट से पहले पांच सेकंड के लिए प्रसंस्करण को रोकने के लिए कार्य करता है।
हम दूसरी बार देख सकते हैं SYSDATE()
लागू किया गया था, इसका वापसी मूल्य पहली बार अलग था। NOW()
दूसरी ओर, दोनों बार समान मान लौटाया।
अन्य विचार
इन दो कार्यों के साथ कुछ अन्य बातों का भी ध्यान रखना चाहिए:
SET TIMESTAMP
SYSDATE()
. को प्रभावित नहीं करता , जबकि यह करता हैNOW()
को प्रभावित करें समारोह।SYSDATE()
यदि कथन-आधारित बाइनरी लॉगिंग का उपयोग किया जाता है तो प्रतिकृति के लिए असुरक्षित है। हालांकि, जरूरत पड़ने पर इससे निपटने के तरीके भी हैं। आप उपयोग कर सकते हैं--sysdate-is-now
कमांड उपनाम के लिए एक गैर-डिफ़ॉल्ट विकल्प हैSYSDATE()
करने के लिएNOW()
प्रतिकृति के लिए इसे सुरक्षित बनाने के लिए।SYSDATE()
. के लिए MariaDB दस्तावेज़ देखें अधिक जानकारी के लिए।